Annotation of gcc/gcc.info-3, revision 1.1

1.1     ! root        1: This is Info file gcc.info, produced by Makeinfo-1.43 from the input
        !             2: file gcc.texi.
        !             3: 
        !             4:    This file documents the use and the internals of the GNU compiler.
        !             5: 
        !             6:    Copyright (C) 1988, 1989, 1992 Free Software Foundation, Inc.
        !             7: 
        !             8:    Permission is granted to make and distribute verbatim copies of
        !             9: this manual provided the copyright notice and this permission notice
        !            10: are preserved on all copies.
        !            11: 
        !            12:    Permission is granted to copy and distribute modified versions of
        !            13: this manual under the conditions for verbatim copying, provided also
        !            14: that the section entitled "GNU General Public License" is included
        !            15: exactly as in the original, and provided that the entire resulting
        !            16: derived work is distributed under the terms of a permission notice
        !            17: identical to this one.
        !            18: 
        !            19:    Permission is granted to copy and distribute translations of this
        !            20: manual into another language, under the above conditions for modified
        !            21: versions, except that the section entitled "GNU General Public
        !            22: License" and this permission notice may be included in translations
        !            23: approved by the Free Software Foundation instead of in the original
        !            24: English.
        !            25: 
        !            26: 
        !            27: File: gcc.info,  Node: M88K Options,  Next: RS/6000 Options,  Prev: AMD29K Options,  Up: Submodel Options
        !            28: 
        !            29: M88K Options
        !            30: ------------
        !            31: 
        !            32:    These `-m' options are defined for Motorola 88K architectures:
        !            33: 
        !            34: `-m88000'
        !            35:      Generate code that works well on both the m88100 and the m88110.
        !            36: 
        !            37: `-m88100'
        !            38:      Generate code tha Generate code that works best for the m88100,
        !            39:      but that also runs on the m88110.
        !            40: 
        !            41: `-m88110'
        !            42:      Generate code that works best for the m88110, and may not run on
        !            43:      the m88100.
        !            44: 
        !            45: `-midentify-revision'
        !            46:      Include an `ident' directive in the assembler output recording the
        !            47:      source file name, compiler name and version, timestamp, and
        !            48:      compilation flags used.
        !            49: 
        !            50: `-mno-underscores'
        !            51:      In assembler output, emit symbol names without adding an
        !            52:      underscore character at the beginning of each name.  The default
        !            53:      is to use an underscore as prefix on each name.
        !            54: 
        !            55: `-mocs-debug-info'
        !            56: `-mno-ocs-debug-info'
        !            57:      Include (or omit) additional debugging information (about
        !            58:      registers used in each stack frame) as specified in the 88open
        !            59:      Object Compatibility Standard, "OCS".  This extra information
        !            60:      allows debugging of code that has had the frame pointer
        !            61:      eliminated.  The default for DG/UX, SVr4, and Delta 88 SVr3.2 is
        !            62:      to include this information; other 88k configurations omit this
        !            63:      information by default.
        !            64: 
        !            65: `-mocs-frame-position'
        !            66:      When emitting COFF debugging information for automatic variables
        !            67:      and parameters stored on the stack, use the offset from the
        !            68:      canonical frame address, which is the stack pointer (register 31)
        !            69:      on entry to the function.  The DG/UX, SVr4, Delta88 SVr3.2, and
        !            70:      BCS configurations use `-mocs-frame-position'; other 88k
        !            71:      configurations have the default `-mno-ocs-frame-position'.
        !            72: 
        !            73: `-mno-ocs-frame-position'
        !            74:      When emitting COFF debugging information for automatic variables
        !            75:      and parameters stored on the stack, use the offset from the frame
        !            76:      pointer register (register 30).  When this option is in effect,
        !            77:      the frame pointer is not eliminated when debugging information is
        !            78:      selected by the -g switch.
        !            79: 
        !            80: `-moptimize-arg-area'
        !            81: `-mno-optimize-arg-area'
        !            82:      Control how to store function arguments in stack frames. 
        !            83:      `-moptimize-arg-area' saves space, but was ruled illegal by
        !            84:      88open.  `-mno-optimize-arg-area' conforms to the 88open
        !            85:      standards.  By default GNU CC does not optimize the argument area.
        !            86: 
        !            87: `-mshort-data-NUM'
        !            88:      Generate smaller data references by making them relative to `r0',
        !            89:      which allows loading a value using a single instruction (rather
        !            90:      than the usual two).  You control which data references are
        !            91:      affected by specifying NUM with this option.  For example, if you
        !            92:      specify `-mshort-data-512', then the data references affected are
        !            93:      those involving displacements of less than 512 bytes. 
        !            94:      `-mshort-data-NUM' is not effective for NUM greater than 64K.
        !            95: 
        !            96: `-msvr4'
        !            97: `-msvr3'
        !            98:      Turn on (`-msvr4') or off (`-msvr3') compiler extensions related
        !            99:      to System V release 4 (SVr4).  This controls the following:
        !           100: 
        !           101:        1. Which variant of the assembler syntax to emit (which you can
        !           102:           select independently using `-mversion-03.00').
        !           103: 
        !           104:        2. `-msvr4' makes the C preprocessor recognize `#pragma weak'
        !           105:           that is used on System V release 4.
        !           106: 
        !           107:        3. `-msvr4' makes GNU CC issue additional declaration
        !           108:           directives used in SVr4.
        !           109: 
        !           110:      `-msvr3' is the default for all m88K configurations except the
        !           111:      SVr4 configuration.
        !           112: 
        !           113: `-mversion-03.00'
        !           114:      In the DG/UX configuration, there are two flavors of SVr4.  This
        !           115:      option modifies `-msvr4' to select whether the hybrid-COFF or
        !           116:      real-ELF flavor is used.  All other configurations ignore this
        !           117:      option.
        !           118: 
        !           119: `-mno-check-zero-division'
        !           120: `-mcheck-zero-division'
        !           121:      Early models of the 88K architecture had problems with division
        !           122:      by zero; in particular, many of them didn't trap.  Use these
        !           123:      options to avoid including (or to include explicitly) additional
        !           124:      code to detect division by zero and signal an exception.  All GNU
        !           125:      CC configurations for the 88K use `-mcheck-zero-division' by
        !           126:      default.
        !           127: 
        !           128: `-muse-div-instruction'
        !           129:      Do not emit code to check both the divisor and dividend when doing
        !           130:      signed integer division to see if either is negative, and adjust
        !           131:      the signs so the divide is done using non-negative numbers. 
        !           132:      Instead, rely on the operating system to calculate the correct
        !           133:      value when the `div' instruction traps.  This results in
        !           134:      different behavior when the most negative number is divided by
        !           135:      -1, but is useful when most or all signed integer divisions are
        !           136:      done with positive numbers.
        !           137: 
        !           138: `-mtrap-large-shift'
        !           139: `-mhandle-large-shift'
        !           140:      Include code to detect bit-shifts of more than 31 bits;
        !           141:      respectively, trap such shifts or emit code to handle them
        !           142:      properly.  By default GNU CC makes no special provision for large
        !           143:      bit shifts.
        !           144: 
        !           145: `-mwarn-passed-structs'
        !           146:      Warn when a function passes a struct as an argument or result. 
        !           147:      Structure-passing conventions have changed during the evolution
        !           148:      of the C language, and are often the source of portability
        !           149:      problems.  By default, GNU CC issues no such warning.
        !           150: 
        !           151: 
        !           152: File: gcc.info,  Node: RS/6000 Options,  Next: RT Options,  Prev: M88K Options,  Up: Submodel Options
        !           153: 
        !           154: IBM RS/6000 Options
        !           155: -------------------
        !           156: 
        !           157:    Only one pair of `-m' options is defined for the IBM RS/6000:
        !           158: 
        !           159: `-mfp-in-toc'
        !           160: `-mno-fp-in-toc'
        !           161:      Control whether or not floating-point constants go in the Table of
        !           162:      Contents (TOC), a table of all global variable and function
        !           163:      addresses.  By default GNU CC puts floating-point constants
        !           164:      there; if the TOC overflows, `-mno-fp-in-toc' will reduce the
        !           165:      size of the TOC, which may avoid the overflow.
        !           166: 
        !           167: 
        !           168: File: gcc.info,  Node: RT Options,  Next: MIPS Options,  Prev: RS/6000 Options,  Up: Submodel Options
        !           169: 
        !           170: IBM RT Options
        !           171: --------------
        !           172: 
        !           173:    These `-m' options are defined for the IBM RT PC:
        !           174: 
        !           175: `-min-line-mul'
        !           176:      Use an in-line code sequence for integer multiplies.  This is the
        !           177:      default.
        !           178: 
        !           179: `-mcall-lib-mul'
        !           180:      Call `lmul$$' for integer multiples.
        !           181: 
        !           182: `-mfull-fp-blocks'
        !           183:      Generate full-size floating point data blocks, including the
        !           184:      minimum amount of scratch space recommended by IBM.  This is the
        !           185:      default.
        !           186: 
        !           187: `-mminimum-fp-blocks'
        !           188:      Do not include extra scratch space in floating point data blocks.
        !           189:       This results in smaller code, but slower execution, since
        !           190:      scratch space must be allocated dynamically.
        !           191: 
        !           192: `-mfp-arg-in-fpregs'
        !           193:      Use a calling sequence incompatible with the IBM calling
        !           194:      convention in which floating point arguments are passed in
        !           195:      floating point registers.  Note that `varargs.h' and `stdargs.h'
        !           196:      will not work with floating point operands if this option is
        !           197:      specified.
        !           198: 
        !           199: `-mfp-arg-in-gregs'
        !           200:      Use the normal calling convention for floating point arguments. 
        !           201:      This is the default.
        !           202: 
        !           203: `-mhc-struct-return'
        !           204:      Return structures of more than one word in memory, rather than in
        !           205:      a register.  This provides compatibility with the MetaWare HighC
        !           206:      (hc) compiler.  Use `-fpcc-struct-return' for compatibility with
        !           207:      the Portable C Compiler (pcc).
        !           208: 
        !           209: `-mnohc-struct-return'
        !           210:      Return some structures of more than one word in registers, when
        !           211:      convenient.  This is the default.  For compatibility with the
        !           212:      IBM-supplied compilers, use either `-fpcc-struct-return' or
        !           213:      `-mhc-struct-return'.
        !           214: 
        !           215: 
        !           216: File: gcc.info,  Node: MIPS Options,  Prev: RT Options,  Up: Submodel Options
        !           217: 
        !           218: MIPS Options
        !           219: ------------
        !           220: 
        !           221:    These `-m' options are defined for the MIPS family of computers:
        !           222: 
        !           223: `-mcpu=CPU TYPE'
        !           224:      Assume the defaults for the machine type CPU TYPE when scheduling
        !           225:      insturctions.  The default CPU TYPE is `default', which picks the
        !           226:      longest cycles times for any of the machines, in order that the
        !           227:      code run at reasonable rates on all MIPS cpu's.  Other choices
        !           228:      for CPU TYPE are `r2000', `r3000', `r4000', and `r6000'.  While
        !           229:      picking a specific CPU TYPE will schedule things appropriately
        !           230:      for that particular chip, the compiler will not generate any code
        !           231:      that does not meet level 1 of the MIPS ISA (instruction set
        !           232:      architecture) without the `-mips2' or `-mips3' switches being
        !           233:      used.
        !           234: 
        !           235: `-mips2'
        !           236:      Issue instructions from level 2 of the MIPS ISA (branch likely,
        !           237:      square root instructions).  The `-mcpu=r4000' or `-mcpu=r6000'
        !           238:      switch must be used in conjuction with `-mips2'.
        !           239: 
        !           240: `-mips3'
        !           241:      Issue instructions from level 3 of the MIPS ISA (64 bit
        !           242:      instructions).  You must use the `-mcpu=r4000' switch along with
        !           243:      `-mips3'.
        !           244: 
        !           245: `-mint64'
        !           246: `-mlong64'
        !           247: `-mlonglong128'
        !           248:      These options don't work at present.
        !           249: 
        !           250: `-mmips-as'
        !           251:      Generate code for the MIPS assembler, and invoke `mips-tfile' to
        !           252:      add normal debug information.  This is the default for all
        !           253:      platforms except for the OSF/1 reference platform, using the
        !           254:      OSF/rose object format.  If the either of the `-gstabs' or
        !           255:      `-gstabs+' switches are used, the `mips-tfile' program will
        !           256:      encapsulate the stabs within MIPS ECOFF.
        !           257: 
        !           258: `-mgas'
        !           259:      Generate code for the GNU assembler.  This is the default on the
        !           260:      OSF/1 reference platform, using the OSF/rose object format.
        !           261: 
        !           262: `-mrnames'
        !           263: `-mno-rnames'
        !           264:      The `-mrnames' switch says to output code using the MIPS software
        !           265:      names for the registers, instead of the hardware names (ie, A0
        !           266:      instead of $4).  The GNU assembler does not support the
        !           267:      `-mrnames' switch, and the MIPS assembler will be instructed to
        !           268:      run the MIPS C preprocessor over the source file.  The
        !           269:      `-mno-rnames' switch is default.
        !           270: 
        !           271: `-mgpopt'
        !           272: `-mno-gpopt'
        !           273:      The `-mgpopt' switch says to write all of the data declarations
        !           274:      before the instructions in the text section, to all the MIPS
        !           275:      assembler to generate one word memory references instead of using
        !           276:      two words for short global or static data items.  This is on by
        !           277:      default if optimization is selected.
        !           278: 
        !           279: `-mstats'
        !           280: `-mno-stats'
        !           281:      For each non-inline function processed, the `-mstats' switch
        !           282:      causes the compiler to emit one line to the standard error file to
        !           283:      print statistics about the program (number of registers saved,
        !           284:      stack size, etc.).
        !           285: 
        !           286: `-mmemcpy'
        !           287: `-mno-memcpy'
        !           288:      The `-mmemcpy' switch makes all block moves call the appropriate
        !           289:      string function (`memcpy' or `bcopy') instead of possibly
        !           290:      generating inline code.
        !           291: 
        !           292: `-mmips-tfile'
        !           293: `-mno-mips-tfile'
        !           294:      The `-mno-mips-tfile' switch causes the compiler not postprocess
        !           295:      the object file with the `mips-tfile' program, after the MIPS
        !           296:      assembler has generated it to add debug support.  If `mips-tfile'
        !           297:      is not run, then no local variables will be available to the
        !           298:      debugger.  In addition, `stage2' and `stage3' objects will have
        !           299:      the temporary file names passed to the assembler embedded in the
        !           300:      object file, which means the objects will not compare the same.
        !           301: 
        !           302: `-msoft-float'
        !           303:      Generate output containing library calls for floating point. 
        !           304:      *Warning:* the requisite libraries are not part of GNU CC. 
        !           305:      Normally the facilities of the machine's usual C compiler are
        !           306:      used, but this can't be done directly in cross-compilation.  You
        !           307:      must make your own arrangements to provide suitable library
        !           308:      functions for cross-compilation.
        !           309: 
        !           310: `-mhard-float'
        !           311:      Generate output containing floating point instructions.  This is
        !           312:      the default if you use the unmodified sources.
        !           313: 
        !           314: `-mfp64'
        !           315:      Assume that the FR bit in the status word is on, and that there
        !           316:      are 32 64-bit floating point registers, instead of 32 32-bit
        !           317:      floating point registers.  You must also specify the
        !           318:      `-mcpu=r4000' and `-mips3' switches.
        !           319: 
        !           320: `-mfp32'
        !           321:      Assume that there are 32 32-bit floating point registers.  This
        !           322:      is the default.
        !           323: 
        !           324: `-mabicalls'
        !           325: `-mno-abicalls'
        !           326:      Emit the `.abicalls', `.cpload', and `.cprestore' pseudo
        !           327:      operations that some System V.4 ports use for position
        !           328:      independent code.
        !           329: 
        !           330: `-mhalf-pic'
        !           331: `-mno-half-pic'
        !           332:      Put pointers to extern references into the data section and load
        !           333:      them up, rather than put the references in the text section. 
        !           334:      These options do not work at present.
        !           335: 
        !           336: `-G NUM'
        !           337:      Put global and static items less than or equal to NUM bytes into
        !           338:      the small data or bss sections instead of the normal data or bss
        !           339:      section.  This allows the assembler to emit one word memory
        !           340:      reference instructions based on the global pointer (GP or $28),
        !           341:      instead of the normal two words used.  By default, NUM is 8 when
        !           342:      the MIPS assembler is used, and 0 when the GNU assembler is used.
        !           343:       The `-G NUM' switch is also passed to the assembler and linker. 
        !           344:      All modules should be compiled with the same `-G NUM' value.
        !           345: 
        !           346:    These options are defined by the macro `TARGET_SWITCHES' in the
        !           347: machine description.  The default for the options is also defined by
        !           348: that macro, which enables you to change the defaults.
        !           349: 
        !           350: 
        !           351: File: gcc.info,  Node: Code Gen Options,  Next: Environment Variables,  Prev: Submodel Options,  Up: Invoking GCC
        !           352: 
        !           353: Options for Code Generation Conventions
        !           354: =======================================
        !           355: 
        !           356:    These machine-independent options control the interface conventions
        !           357: used in code generation.
        !           358: 
        !           359:    Most of them have both positive and negative forms; the negative
        !           360: form of `-ffoo' would be `-fno-foo'.  In the table below, only one of
        !           361: the forms is listed--the one which is not the default.  You can figure
        !           362: out the other form by either removing `no-' or adding it.
        !           363: 
        !           364: `-fpcc-struct-return'
        !           365:      Use the same convention for returning `struct' and `union' values
        !           366:      that is used by the usual C compiler on your system.  This
        !           367:      convention is less efficient for small structures, and on many
        !           368:      machines it fails to be reentrant; but it has the advantage of
        !           369:      allowing intercallability between GNU CC-compiled code and
        !           370:      PCC-compiled code.
        !           371: 
        !           372: `-fshort-enums'
        !           373:      Allocate to an `enum' type only as many bytes as it needs for the
        !           374:      declared range of possible values.  Specifically, the `enum' type
        !           375:      will be equivalent to the smallest integer type which has enough
        !           376:      room.
        !           377: 
        !           378: `-fshort-double'
        !           379:      Use the same size for `double' as for `float'.
        !           380: 
        !           381: `-fshared-data'
        !           382:      Requests that the data and non-`const' variables of this
        !           383:      compilation be shared data rather than private data.  The
        !           384:      distinction makes sense only on certain operating systems, where
        !           385:      shared data is shared between processes running the same program,
        !           386:      while private data exists in one copy per process.
        !           387: 
        !           388: `-fno-common'
        !           389:      Allocate even uninitialized global variables in the bss section
        !           390:      of the object file, rather than generating them as common blocks.
        !           391:       This has the effect that if the same variable is declared
        !           392:      (without `extern') in two different compilations, you will get an
        !           393:      error when you link them.  The only reason this might be useful
        !           394:      is if you wish to verify that the program will work on other
        !           395:      systems which always work this way.
        !           396: 
        !           397: `-fno-ident'
        !           398:      Ignore the `#ident' directive.
        !           399: 
        !           400: `-fno-gnu-linker'
        !           401:      Don't output global initializations such as C++ constructors and
        !           402:      destructors in the form used by the GNU linker (on systems where
        !           403:      the GNU linker is the standard method of handling them).  Use
        !           404:      this option when you want to use a "collect" program and a
        !           405:      non-GNU linker.
        !           406: 
        !           407: `-finhibit-size-directive'
        !           408:      Don't output a `.size' assembler directive, or anything else that
        !           409:      would cause trouble if the function is split in the middle, and
        !           410:      the two halves are placed at locations far apart in memory.  This
        !           411:      option is used when compiling `crtstuff.c'; you should not need
        !           412:      to use it for anything else.
        !           413: 
        !           414: `-fvolatile'
        !           415:      Consider all memory references through pointers to be volatile.
        !           416: 
        !           417: `-fpic'
        !           418:      If supported for the target machines, generate
        !           419:      position-independent code, suitable for use in a shared library. 
        !           420:      All addresses will be accessed through a global offset table
        !           421:      (GOT).  If the GOT size for the linked executable exceeds a
        !           422:      machine-specific maximum size, you will get an error message from
        !           423:      the linker indicating that `-fpic' does not work; recompile with
        !           424:      `-fPIC' instead.  (These maximums are 16k on the m88k, 8k on the
        !           425:      Sparc, and 32k on the m68k and RS/6000.  The 386 has no such
        !           426:      limit.)
        !           427: 
        !           428:      Position-independent code requires special support, and therefore
        !           429:      works only on certain machines.  Code generated for the IBM
        !           430:      RS/6000 is always position-independent.
        !           431: 
        !           432: `-fPIC'
        !           433:      If supported for the target machine, emit position-independent
        !           434:      code, suitable for dynamic linking and avoiding any limit on the
        !           435:      size of the global offset table.  This option makes a difference
        !           436:      on the m68k, m88k and the Sparc.
        !           437: 
        !           438:      Position-independent code requires special support, and therefore
        !           439:      works only on certain machines.
        !           440: 
        !           441: `-ffixed-REG'
        !           442:      Treat the register named REG as a fixed register; generated code
        !           443:      should never refer to it (except perhaps as a stack pointer, frame
        !           444:      pointer or in some other fixed role).
        !           445: 
        !           446:      REG must be the name of a register.  The register names accepted
        !           447:      are machine-specific and are defined in the `REGISTER_NAMES'
        !           448:      macro in the machine description macro file.
        !           449: 
        !           450:      This flag does not have a negative form, because it specifies a
        !           451:      three-way choice.
        !           452: 
        !           453: `-fcall-used-REG'
        !           454:      Treat the register named REG as an allocatable register that is
        !           455:      clobbered by function calls.  It may be allocated for temporaries
        !           456:      or variables that do not live across a call.  Functions compiled
        !           457:      this way will not save and restore the register REG.
        !           458: 
        !           459:      Use of this flag for a register that has a fixed pervasive role
        !           460:      in the machine's execution model, such as the stack pointer or
        !           461:      frame pointer, will produce disastrous results.
        !           462: 
        !           463:      This flag does not have a negative form, because it specifies a
        !           464:      three-way choice.
        !           465: 
        !           466: `-fcall-saved-REG'
        !           467:      Treat the register named REG as an allocatable register saved by
        !           468:      functions.  It may be allocated even for temporaries or variables
        !           469:      that live across a call.  Functions compiled this way will save
        !           470:      and restore the register REG if they use it.
        !           471: 
        !           472:      Use of this flag for a register that has a fixed pervasive role
        !           473:      in the machine's execution model, such as the stack pointer or
        !           474:      frame pointer, will produce disastrous results.
        !           475: 
        !           476:      A different sort of disaster will result from the use of this
        !           477:      flag for a register in which function values may be returned.
        !           478: 
        !           479:      This flag does not have a negative form, because it specifies a
        !           480:      three-way choice.
        !           481: 
        !           482: 
        !           483: File: gcc.info,  Node: Environment Variables,  Prev: Code Gen Options,  Up: Invoking GCC
        !           484: 
        !           485: Environment Variables Affecting GNU CC
        !           486: ======================================
        !           487: 
        !           488:    This section describes several environment variables that affect
        !           489: how GNU CC operates.  They work by specifying directories or prefixes
        !           490: to use when searching for various kinds of files.
        !           491: 
        !           492:    Note that you can also specify places to search using options such
        !           493: as `-B', `-I' and `-L' (*note Directory Options::.).  These take
        !           494: precedence over places specified using environment variables, which in
        !           495: turn take precedence over those specified by the configuration of GNU
        !           496: CC.  *Note Driver::.
        !           497: 
        !           498: `TMPDIR'
        !           499:      If `TMPDIR' is set, it specifies the directory to use for
        !           500:      temporary files.  GNU CC uses temporary files to hold the output
        !           501:      of one stage of compilation which is to be used as input to the
        !           502:      next stage: for example, the output of the preprocessor, which is
        !           503:      the input to the compiler proper.
        !           504: 
        !           505: `GCC_EXEC_PREFIX'
        !           506:      If `GCC_EXEC_PREFIX' is set, it specifies a prefix to use in the
        !           507:      names of the subprograms executed by the compiler.  No slash is
        !           508:      added when this prefix is combined with the name of a subprogram,
        !           509:      but you can specify a prefix that ends with a slash if you wish.
        !           510: 
        !           511:      If GNU CC cannot find the subprogram using the specified prefix,
        !           512:      it tries looking in the usual places for the subprogram.
        !           513: 
        !           514:      Other prefixes specified with `-B' take precedence over this
        !           515:      prefix.
        !           516: 
        !           517:      This prefix is also used for finding files such as `crt0.o' that
        !           518:      are used for linking.
        !           519: 
        !           520:      In addition, the prefix is used in an unusual way in finding the
        !           521:      directories to search for header files.  For each of the standard
        !           522:      directories whose name normally begins with `/usr/local/lib/gcc'
        !           523:      (more precisely, with the value of `GCC_INCLUDE_DIR'), GNU CC
        !           524:      tries replacing that beginning with the specified prefix to
        !           525:      produce an alternate directory name.  Thus, with `-Bfoo/', GNU CC
        !           526:      will search `foo/bar' where it would normally search
        !           527:      `/usr/local/lib/bar'.  These alternate directories are searched
        !           528:      first; the standard directories come next.
        !           529: 
        !           530: `COMPILER_PATH'
        !           531:      The value of `COMPILER_PATH' is a colon-separated list of
        !           532:      directories, much like `PATH'.  GNU CC tries the directories thus
        !           533:      specified when searching for subprograms, if it can't find the
        !           534:      subprograms using `GCC_EXEC_PREFIX'.
        !           535: 
        !           536: `LIBRARY_PATH'
        !           537:      The value of `LIBRARY_PATH' is a colon-separated list of
        !           538:      directories, much like `PATH'.  GNU CC tries the directories thus
        !           539:      specified when searching for special linker files, if it can't
        !           540:      find them using `GCC_EXEC_PREFIX'.  Linking using GNU CC also
        !           541:      uses these directories when searching for ordinary libraries for
        !           542:      the `-l' option (but directories specified with `-L' come first).
        !           543: 
        !           544: `C_INCLUDE_PATH'
        !           545: `C++_INCLUDE_PATH'
        !           546: `OBJC_INCLUDE_PATH'
        !           547:      These environment variables pertain to particular languages.  Each
        !           548:      variable's value is a colon-separated list of directories, much
        !           549:      like `PATH'.  When GNU CC searches for header files, it tries the
        !           550:      directories listed in the variable for the language you are
        !           551:      using, after the directories specified with `-I' but before the
        !           552:      standard header file directories.
        !           553: 
        !           554: `DEPENDENCIES_OUTPUT'
        !           555:      If this variable is set, its value specifies how to output
        !           556:      dependencies for Make based on the header files processed by the
        !           557:      compiler.  This output looks much like the output from the `-M'
        !           558:      option (*note Preprocessor Options::.), but it goes to a separate
        !           559:      file, and is in addition to the usual results of compilation.
        !           560: 
        !           561:      The value of `DEPENDENCIES_OUTPUT' can be just a file name, in
        !           562:      which case the Make rules are written to that file, guessing the
        !           563:      target name from the source file name.  Or the value can have the
        !           564:      form `FILE TARGET', in which case the rules are written to file
        !           565:      FILE using TARGET as the target name.
        !           566: 
        !           567: 
        !           568: File: gcc.info,  Node: Installation,  Next: Trouble,  Prev: Invoking GCC,  Up: Top
        !           569: 
        !           570: Installing GNU CC
        !           571: *****************
        !           572: 
        !           573:    Here is the procedure for installing GNU CC on a Unix system.
        !           574: 
        !           575: * Menu:
        !           576: 
        !           577: * Other Dir::     Compiling in a separate directory (not where the source is).
        !           578: * Sun Install::   See below for installation on the Sun.
        !           579: * 3B1 Install::   See below for installation on the 3B1.
        !           580: * VMS Install::   See below for installation on VMS.
        !           581: * SCO Install::   See below for installation on SCO System V 3.2.
        !           582:                     (This may also be a start on solving
        !           583:                      the problems of installation on Xenix.)
        !           584: * Unos Install::  See below for installation on Unos (from CRDS).
        !           585: 
        !           586:   1. If you have built GNU CC previously in the same directory for a
        !           587:      different target machine, do `make cleanconfig' to delete all
        !           588:      files that might be invalid.
        !           589: 
        !           590:   2. On a Sequent system, go to the Berkeley universe.
        !           591: 
        !           592:   3. On a System V release 4 system, make sure `/usr/bin' precedes
        !           593:      `/usr/ucb' in `PATH'.  The `cc' command in `/usr/ucb' uses
        !           594:      libraries which have bugs.
        !           595: 
        !           596:   4. Specify the host and target machine configurations.  You do this
        !           597:      by running the file `configure' with appropriate arguments.
        !           598: 
        !           599:         If you are building a compiler to produce code for the machine
        !           600:      it runs on, specify just one machine type.  To build a
        !           601:      cross-compiler, specify two configurations, one for the "host
        !           602:      machine" (which the compiler runs on), and one for the "target
        !           603:      machine" (which the compiler produces code for).  The command
        !           604:      looks like this:
        !           605: 
        !           606:           configure --host=sun3-sunos3 --target=sparc-sun-sunos4.1
        !           607: 
        !           608:         A configuration name may be canonical or it may be more or less
        !           609:      abbreviated.
        !           610: 
        !           611:         A canonical configuration name has three parts, separated by
        !           612:      dashes.  It looks like this: `CPU-COMPANY-SYSTEM'.  (The three
        !           613:      parts may themselves contain dashes; `configure' can figure out
        !           614:      which dashes serve which purpose.)  For example,
        !           615:      `m68k-sun-sunos4.1' specifies a Sun 3.
        !           616: 
        !           617:         You can also replace parts of the configuration by nicknames
        !           618:      or aliases.  For example, `sun3' stands for `m68k-sun', so
        !           619:      `sun3-sunos4.1' is another way to specify a Sun 3.  You can also
        !           620:      use simply `sun3-sunos', since the version of Sunos is assumed by
        !           621:      default to be version 4.  `sun3-bsd' also works, since
        !           622:      `configure' knows that the only BSD variant on a Sun 3 is Sunos.
        !           623: 
        !           624:         You can specify a version number after any of the system
        !           625:      types, and some of the CPU types.  In most cases, the version is
        !           626:      irrelevant, and will be ignored.  So you might as well specify
        !           627:      the version if you know it.
        !           628: 
        !           629:         Here are the possible CPU types:
        !           630: 
        !           631:           a29k, arm, cN, hppa, i386, i860, m68000, m68k, m88k, mips,
        !           632:           ns32k, romp, rs6000, sparc, vax.
        !           633: 
        !           634:         Note that the type hppa currently works only with Berkeley
        !           635:      systems, not with HP/UX.
        !           636: 
        !           637:         Here are the recognized company names.  As you can see,
        !           638:      customary abbreviations are used rather than the longer official
        !           639:      names.
        !           640: 
        !           641:           alliant, altos, apollo, att, convergent, convex, crds, dec,
        !           642:           dg, encore, harris, hp, ibm, mips, motorola, ncr, next, ns,
        !           643:           omron, sequent, sgi, sony, sun, tti, unicom.
        !           644: 
        !           645:         The company name is meaningful only to disambiguate when the
        !           646:      rest of the information supplied is insufficient.  You can omit
        !           647:      it, writing just `CPU-SYSTEM', if it is not needed.  For example,
        !           648:      `vax-ultrix4.2' is equivalent to `vax-dec-ultrix4.2'.
        !           649: 
        !           650:         Here is a list of system types:
        !           651: 
        !           652:           bsd, sysv, mach, minix, genix, ultrix, vms, sco, esix, isc,
        !           653:           aix, sunos, hpux, unos, luna, dgux, newsos, osfrose, osf,
        !           654:           dynix, aos, ctix.
        !           655: 
        !           656:      You can omit the system type; then `configure' guesses the
        !           657:      operating system from the CPU and company.
        !           658: 
        !           659:         Often a particular model of machine has a name.  Many of these
        !           660:      names are recognized as an alias for a CPU/company combination. 
        !           661:      The alias `sun3', mentioned above, is an example of this: it
        !           662:      stands for `m68k-sun'.  Sometimes we accept a company name as a
        !           663:      machine name, when the name is popularly used for a particular
        !           664:      machine.  Here is a table of the known machine names:
        !           665: 
        !           666:           3300, 3b1, 7300, altos3068, altos, apollo68, att-7300,
        !           667:           balance, convex-cN, crds, decstation-3100, decstation-dec,
        !           668:           decstation, delta, encore, gmicro, hp7NN, hp8NN, hp9k2NN,
        !           669:           hp9k3NN, hp9k7NN, hp9k8NN, iris4d, iris, isi68, m3230,
        !           670:           magnum, merlin, miniframe, mmax, news-3600, news800, news,
        !           671:           next, pbd, pc532, pmax, ps2, risc-news, rtpc, sun2, sun386i,
        !           672:           sun386, sun3, sun4, symmetry, tower-32, tower.
        !           673: 
        !           674:         If you specify an impossible combination such as `i860-dg-vms',
        !           675:      then you may get an error message from `configure', or it may
        !           676:      ignore part of the information and do the best it can with the
        !           677:      rest.  `configure' always prints the canonical name for the
        !           678:      alternative that it used.
        !           679: 
        !           680:         On certain systems, you must specify whether you want GNU CC
        !           681:      to work with the usual compilation tools or with the GNU
        !           682:      compilation tools (including GAS).  Use the `--gas' argument when
        !           683:      you run `configure', if you want to use the GNU tools.  The
        !           684:      systems were this makes a difference are `i386-ANYTHING-sysv',
        !           685:      `i860-ANYTHING-bsd', `m68k-hp-hpux', `m68k-sony-bsd',
        !           686:      `m68k-altos-sysv', `m68000-hp-hpux', and `m68000-att-sysv'.  On
        !           687:      any other system, `--gas' has no effect.
        !           688: 
        !           689:         On certain systems, you must specify whether the machine has a
        !           690:      floating point unit.  These systems are `m68k-sun-sunosN' and
        !           691:      `m68k-isi-bsd'.  On any other system, `--nfp' currently has no
        !           692:      effect, though perhaps there are other systems where it could
        !           693:      usefully make a difference.
        !           694: 
        !           695:         If you want to install your own homemade configuration files,
        !           696:      you can use `local' as the company name to access them.  If you
        !           697:      use configuration `CPU-local', the entire configuration name is
        !           698:      used to form the configuration file names.
        !           699: 
        !           700:         Thus, if you specify `m68k-local', then the files used are
        !           701:      `m68k-local.md', `m68k-local.h', `m68k-local.c',
        !           702:      `xm-m68k-local.h', `t-m68k-local', and `x-m68k-local'.
        !           703: 
        !           704:         Here is a list of configurations that have special treatment:
        !           705: 
        !           706:     `m68000-att'
        !           707:           AT&T 3b1, a.k.a. 7300 PC.  Special procedures are needed to
        !           708:           compile GNU CC with this machine's standard C compiler, due
        !           709:           to bugs in that compiler.  *Note 3b1 Install::.  You can
        !           710:           bootstrap it more easily with previous versions of GNU CC if
        !           711:           you have them.
        !           712: 
        !           713:     `m68000-hp-bsd'
        !           714:           HP 9000 series 200 running BSD.  Note that the C compiler
        !           715:           that comes with this system cannot compile GNU CC; contact
        !           716:           `[email protected]' to get binaries of GNU CC for bootstrapping.
        !           717: 
        !           718:     `m68k-altos'
        !           719:           Altos 3068.  You must use the GNU assembler, linker and
        !           720:           debugger, with COFF-encapsulation.  Also, you must fix a
        !           721:           kernel bug.  Details in the file `ALTOS-README'.
        !           722: 
        !           723:     `m68k-hp-hpux'
        !           724:           HP 9000 series 200 or 300 running HPUX.  GNU CC does not
        !           725:           support the special symbol table used by HP's debugger, but
        !           726:           you can debug programs with GDB if you specify `--gas' to
        !           727:           use the GNU tools instead.  In order to use the GNU tools,
        !           728:           you must install a library conversion program called `hpxt'.
        !           729: 
        !           730:     `m68k-sun'
        !           731:           Sun 3.  We do not provide a configuration file to use the
        !           732:           Sun FPA by default, because programs that establish signal
        !           733:           handlers for floating point traps inherently cannot work
        !           734:           with the FPA.
        !           735: 
        !           736:     `m88k-dgux'
        !           737:           Motorola m88k running DG/UX.  To build native or cross
        !           738:           compilers on DG/UX, you must first change to the 88open BCS
        !           739:           software development environment.  This is done by issuing
        !           740:           this command:
        !           741: 
        !           742:                eval `sde-target m88kbcs`
        !           743: 
        !           744:     `ns32k-encore'
        !           745:           Encore ns32000 system.  Encore systems are supported only
        !           746:           under BSD.
        !           747: 
        !           748:     `ns32k-*-genix'
        !           749:           National Semiconductor ns32000 system.  Genix has bugs in
        !           750:           `alloca' and `malloc'; you must get the compiled versions of
        !           751:           these from GNU Emacs.
        !           752: 
        !           753:     `ns32k-utek'
        !           754:           UTEK ns32000 system ("merlin").  The C compiler that comes
        !           755:           with this system cannot compile GNU CC; contact
        !           756:           `tektronix!reed!mason' to get binaries of GNU CC for
        !           757:           bootstrapping.
        !           758: 
        !           759:     `rs6000-ibm'
        !           760:           IBM PowerStation/6000 machines.  Due to the nonstandard
        !           761:           debugging information required for this machine, `-g' is not
        !           762:           available in this configuration.
        !           763: 
        !           764:     `vax-dec-ultrix'
        !           765:           Don't try compiling with Vax C (`vcc').  It produces
        !           766:           incorrect code in some cases (for example, when `alloca' is
        !           767:           used).
        !           768: 
        !           769:           Meanwhile, compiling `cp-parse.c' with pcc does not work
        !           770:           because of an internal table size limitation in that
        !           771:           compiler.  To avoid this problem, compile just the GNU C
        !           772:           compiler first, and use it to recompile building all the
        !           773:           languages that you want to run.
        !           774: 
        !           775:         Here we spell out what files will be set up by `configure'. 
        !           776:      Normally you need not be concerned with these files.
        !           777: 
        !           778:         * A symbolic link named `config.h' is made to the top-level
        !           779:           config file for the machine you will run the compiler on
        !           780:           (*note Config::.).  This file is responsible for defining
        !           781:           information about the host machine.  It includes `tm.h'.
        !           782: 
        !           783:           The top-level config file is located in the subdirectory
        !           784:           `config'.  Its name is always `xm-SOMETHING.h'; usually
        !           785:           `xm-MACHINE.h', but there are some exceptions.
        !           786: 
        !           787:           If your system does not support symbolic links, you might
        !           788:           want to set up `config.h' to contain a `#include' command
        !           789:           which refers to the appropriate file.
        !           790: 
        !           791:         * A symbolic link named `tconfig.h' is made to the top-level
        !           792:           config file for your target machine.  This is used for
        !           793:           compiling certain programs to run on that machine.
        !           794: 
        !           795:         * A symbolic link named `tm.h' is made to the
        !           796:           machine-description macro file for your target machine.  It
        !           797:           should be in the subdirectory `config' and its name is often
        !           798:           `MACHINE.h'.
        !           799: 
        !           800:         * A symbolic link named `md' will be made to the machine
        !           801:           description pattern file.  It should be in the `config'
        !           802:           subdirectory and its name should be `MACHINE.md'; but
        !           803:           MACHINE is often not the same as the name used in the `tm.h'
        !           804:           file because the `md' files are more general.
        !           805: 
        !           806:         * A symbolic link named `aux-output.c' will be made to the
        !           807:           output subroutine file for your machine.  It should be in
        !           808:           the `config' subdirectory and its name should be `MACHINE.c'.
        !           809: 
        !           810:         * The command file `configure' also constructs `Makefile' by
        !           811:           adding some text to the template file `Makefile.in'.  The
        !           812:           additional text comes from files in the `config' directory,
        !           813:           named `t-TARGET' and `h-HOST'.  If these files do not exist,
        !           814:           it means nothing needs to be added for a given target or
        !           815:           host.
        !           816: 
        !           817:   5. Make sure the Bison parser generator is installed.  (This is
        !           818:      unnecessary if the Bison output files `c-parse.c' and `cexp.c'
        !           819:      are more recent than `c-parse.y' and `cexp.y' and you do not plan
        !           820:      to change the `.y' files.)
        !           821: 
        !           822:         Bison versions older than Sept 8, 1988 will produce incorrect
        !           823:      output for `c-parse.c'.
        !           824: 
        !           825:   6. Build the compiler.  Just type `make LANGUAGES=c' in the compiler
        !           826:      directory.
        !           827: 
        !           828:         `LANGUAGES=c' specifies that only the C compiler should be
        !           829:      compiled.  The makefile normally builds compilers for all the
        !           830:      supported languages; currently, C, C++ and Objective C.  However,
        !           831:      C is the only language that is sure to work when you build with
        !           832:      other non-GNU C compilers.  In addition, building anything but C
        !           833:      at this stage is a waste of time.
        !           834: 
        !           835:         In general, you can specify the languages to build by typing
        !           836:      the argument `LANGUAGES="LIST"', where LIST is one or more words
        !           837:      from the list `c', `c++', and `objective-c'.
        !           838: 
        !           839:         Ignore any warnings you may see about "statement not reached"
        !           840:      in `insn-emit.c'; they are normal.  Any other compilation errors
        !           841:      may represent bugs in the port to your machine or operating
        !           842:      system, and should be investigated and reported (*note Bugs::.).
        !           843: 
        !           844:         Some commercial compilers fail to compile GNU CC because they
        !           845:      have bugs or limitations.  For example, the Microsoft compiler is
        !           846:      said to run out of macro space.  Some Ultrix compilers run out of
        !           847:      expression space; then you need to break up the statement where
        !           848:      the problem happens.
        !           849: 
        !           850:   7. If you are using COFF-encapsulation, you must convert `libgcc.a'
        !           851:      to a GNU-format library at this point.  See the file
        !           852:      `README-ENCAP' in the directory containing the GNU binary file
        !           853:      utilities, for directions.
        !           854: 
        !           855:   8. Move the first-stage object files and executables into a
        !           856:      subdirectory with this command:
        !           857: 
        !           858:           make stage1
        !           859: 
        !           860:         The files are moved into a subdirectory named `stage1'.  Once
        !           861:      installation is complete, you may wish to delete these files with
        !           862:      `rm -r stage1'.
        !           863: 
        !           864:   9. Recompile the compiler with itself, with this command:
        !           865: 
        !           866:           make CC=stage1/gcc CFLAGS="-g -O -Bstage1/"
        !           867: 
        !           868:         This is called making the stage 2 compiler.
        !           869: 
        !           870:         The command shown above builds compilers for all the supported
        !           871:      languages.  If you don't want them all, you can specify the
        !           872:      languages to build by typing the argument `LANGUAGES="LIST"'. 
        !           873:      LIST should contain one or more words from the list `c', `c++',
        !           874:      and `objective-c', separated by spaces.
        !           875: 
        !           876:         On a 68000 or 68020 system lacking floating point hardware,
        !           877:      unless you have selected a `tm.h' file that expects by default
        !           878:      that there is no such hardware, do this instead:
        !           879: 
        !           880:           make CC=stage1/gcc CFLAGS="-g -O -Bstage1/ -msoft-float"
        !           881: 
        !           882:  10. If you wish to test the compiler by compiling it with itself one
        !           883:      more time, do this:
        !           884: 
        !           885:           make stage2
        !           886:           make CC=stage2/gcc CFLAGS="-g -O -Bstage2/"
        !           887: 
        !           888:      This is called making the stage 3 compiler.  Aside from the `-B'
        !           889:      option, the options should be the same as when you made the stage
        !           890:      2 compiler.
        !           891: 
        !           892:         Then compare the latest object files with the stage 2 object
        !           893:      files--they ought to be identical, unless they contain time
        !           894:      stamps.  On systems where object files do not contain time
        !           895:      stamps, you can do this (in Bourne shell):
        !           896: 
        !           897:           for file in *.o; do
        !           898:           cmp $file stage2/$file
        !           899:           done
        !           900: 
        !           901:         This will mention any object files that differ between stage 2
        !           902:      and stage 3.  Any difference, no matter how innocuous, indicates
        !           903:      that the stage 2 compiler has compiled GNU CC incorrectly, and is
        !           904:      therefore a potentially serious bug which you should investigate
        !           905:      and report (*note Bugs::.).
        !           906: 
        !           907:         On systems that use COFF object files, bytes 5 to 8 will
        !           908:      always be different, since it is a timestamp.  On these systems,
        !           909:      you can do the comparison as follows (in Bourne shell):
        !           910: 
        !           911:           for file in *.o; do
        !           912:           tail +10c $file > foo1
        !           913:           tail +10c stage2/$file > foo2
        !           914:           cmp foo1 foo2 || echo $file
        !           915:           done
        !           916: 
        !           917:         On MIPS machines, you need to use the shell script `ecoff-cmp'
        !           918:      to compare two object files if you have built the compiler with
        !           919:      the `-mno-mips-tfile' option.  Thus, do this:
        !           920: 
        !           921:           for file in *.o; do
        !           922:           ecoff-cmp $file stage2/$file
        !           923:           done
        !           924: 
        !           925:  11. Install the compiler driver, the compiler's passes and run-time
        !           926:      support.  You can use the following command:
        !           927: 
        !           928:           make CC=stage2/gcc install
        !           929: 
        !           930:      (Use the same value for `CC' that you used when compiling the
        !           931:      files that are being installed.)
        !           932: 
        !           933:         This copies the files `cc1', `cpp' and `libgcc.a' to files
        !           934:      `cc1', `cpp' and `libgcc.a' in directory
        !           935:      `/usr/local/lib/gcc/TARGET/VERSION', which is where the compiler
        !           936:      driver program looks for them.  Here TARGET is the target machine
        !           937:      type specified when you ran `configure', and VERSION is the
        !           938:      version number of GNU CC.  This naming scheme permits various
        !           939:      versions and/or cross-compilers to coexist.
        !           940: 
        !           941:         It also copies the driver program `gcc' into the directory
        !           942:      `/usr/local/bin', so that it appears in typical execution search
        !           943:      paths.
        !           944: 
        !           945:         *Warning: there is a bug in `alloca' in the Sun library.  To
        !           946:      avoid this bug, install the binaries of GNU CC that were compiled
        !           947:      by GNU CC.  They use `alloca' as a built-in function and never
        !           948:      the one in the library.*
        !           949: 
        !           950:  12. If you will be using C++ or Objective C, and your operating
        !           951:      system does not handle constructors, then you must build and
        !           952:      install the program `collect2'.  Do this with the following
        !           953:      command:
        !           954: 
        !           955:           make CC="stage2/gcc -O" install-collect2
        !           956: 
        !           957:         The systems that *do* handle constructors on their own include
        !           958:      system V release 4, and system V release 3 on the Intel 386.
        !           959: 
        !           960:         Berkeley systems that use the "a.out" object file format handle
        !           961:      constructors without `collect2' if you use the GNU linker.  But if
        !           962:      you don't use the GNU linker, then you need `collect2' on these
        !           963:      systems.
        !           964: 
        !           965:  13. Build and install `protoize' if you want it.  Type
        !           966: 
        !           967:           make CC="stage2/gcc -O" install-proto
        !           968: 
        !           969:         There is as yet no documentation for `protoize'.  Sorry.
        !           970: 
        !           971:  14. Correct errors in the header files on your machine.
        !           972: 
        !           973:         Various system header files often contain constructs which are
        !           974:      incompatible with ANSI C, and they will not work when you compile
        !           975:      programs with GNU CC.  This behavior consists of substituting for
        !           976:      macro argument names when they appear inside of character
        !           977:      constants.  The most common offender is `ioctl.h'.
        !           978: 
        !           979:         You can overcome this problem when you compile by specifying
        !           980:      the `-traditional' option.
        !           981: 
        !           982:         Alternatively, on Sun systems and 4.3BSD at least, you can
        !           983:      correct the include files by running the shell script
        !           984:      `fixincludes'.  This installs modified, corrected copies of the
        !           985:      files `ioctl.h', `ttychars.h' and many others, in a special
        !           986:      directory where only GNU CC will normally look for them.  This
        !           987:      script will work on various systems because it chooses the files
        !           988:      by searching all the system headers for the problem cases that we
        !           989:      know about.
        !           990: 
        !           991:         Use the following command to do this:
        !           992: 
        !           993:           make install-fixincludes
        !           994: 
        !           995:      If you selected a different directory for GNU CC installation
        !           996:      when you installed it, by specifying the Make variable `prefix' or
        !           997:      `libdir', specify it the same way in this command.
        !           998: 
        !           999:         Note that some systems are starting to come with ANSI C system
        !          1000:      header files.  On these systems, don't run `fixincludes'; it may
        !          1001:      not work, and is certainly not necessary.
        !          1002: 
        !          1003:    If you cannot install the compiler's passes and run-time support in
        !          1004: `/usr/local/lib', you can alternatively use the `-B' option to specify
        !          1005: a prefix by which they may be found.  The compiler concatenates the
        !          1006: prefix with the names  `cpp', `cc1' and `libgcc.a'.  Thus, you can put
        !          1007: the files in a directory `/usr/foo/gcc' and specify `-B/usr/foo/gcc/'
        !          1008: when you run GNU CC.
        !          1009: 
        !          1010:    Also, you can specify an alternative default directory for these
        !          1011: files by setting the Make variable `libdir' when you make GNU CC.
        !          1012: 
        !          1013: 
        !          1014: File: gcc.info,  Node: Other Dir,  Next: Sun Install,  Prev: Installation,  Up: Installation
        !          1015: 
        !          1016: Compilation in a Separate Directory
        !          1017: ===================================
        !          1018: 
        !          1019:    If you wish to build the object files and executables in a directory
        !          1020: other than the one containing the source files, here is what you must
        !          1021: do differently:
        !          1022: 
        !          1023:   1. Make sure you have a version of Make that supports the `VPATH'
        !          1024:      feature.  (GNU Make supports it, as do Make versions on most BSD
        !          1025:      systems.)
        !          1026: 
        !          1027:   2. Go to that directory before running `configure':
        !          1028: 
        !          1029:           mkdir gcc-sun3
        !          1030:           cd gcc-sun3
        !          1031: 
        !          1032:         On systems that do not support symbolic links, this directory
        !          1033:      must be on the same file system as the source code directory.
        !          1034: 
        !          1035:   3. Specify where to find `configure' when you run it:
        !          1036: 
        !          1037:           ../gcc-2.00/configure ...
        !          1038: 
        !          1039:         This also tells `configure' where to find the compiler sources;
        !          1040:      `configure' takes the directory from the file name that was used
        !          1041:      to invoke it.  But if you want to be sure, you can specify the
        !          1042:      source directory with the `--srcdir' option, like this:
        !          1043: 
        !          1044:           ../gcc-2.00/configure --srcdir=../gcc-2.00 sun3
        !          1045: 
        !          1046:         The directory you specify with `--srcdir' need not be the same
        !          1047:      as the one that `configure' is found in.
        !          1048: 
        !          1049:    Now, you can run `make' in that directory.  You need not repeat the
        !          1050: configuration steps shown above, when ordinary source files change. 
        !          1051: You must, however, run `configure' again when the configuration files
        !          1052: change, if your system does not support symbolic links.
        !          1053: 
        !          1054: 
        !          1055: File: gcc.info,  Node: Sun Install,  Next: 3b1 Install,  Prev: Other Dir,  Up: Installation
        !          1056: 
        !          1057: Installing GNU CC on the Sun
        !          1058: ============================
        !          1059: 
        !          1060:    Make sure the environment variable `FLOAT_OPTION' is not set when
        !          1061: you compile `libgcc.a'.  If this option were set to `f68881' when
        !          1062: `libgcc.a' is compiled, the resulting code would demand to be linked
        !          1063: with a special startup file and would not link properly without
        !          1064: special pains.
        !          1065: 
        !          1066:    There is a bug in `alloca' in certain versions of the Sun library. 
        !          1067: To avoid this bug, install the binaries of GNU CC that were compiled by
        !          1068: GNU CC.  They use `alloca' as a built-in function and never the one in
        !          1069: the library.
        !          1070: 
        !          1071:    Some versions of the Sun compiler crash when compiling GNU CC.  The
        !          1072: problem is a segmentation fault in cpp.  This problem seems to be due
        !          1073: to the bulk of data in the environment variables.  You may be able to
        !          1074: avoid it by using the following command to compile GNU CC with Sun CC:
        !          1075: 
        !          1076:      make CC="TERMCAP=x OBJS=x LIBFUNCS=x STAGESTUFF=x cc"
        !          1077: 
        !          1078: 
        !          1079: File: gcc.info,  Node: 3b1 Install,  Next: SCO Install,  Prev: Sun Install,  Up: Installation
        !          1080: 
        !          1081: Installing GNU CC on the 3b1
        !          1082: ============================
        !          1083: 
        !          1084:    Installing GNU CC on the 3b1 is difficult if you do not already have
        !          1085: GNU CC running, due to bugs in the installed C compiler.  However, the
        !          1086: following procedure might work.  We are unable to test it.
        !          1087: 
        !          1088:   1. Comment out the `#include "config.h"' line on line 37 of `cccp.c'
        !          1089:      and do `make cpp'.  This makes a preliminary version of GNU cpp.
        !          1090: 
        !          1091:   2. Save the old `/lib/cpp' and copy the preliminary GNU cpp to that
        !          1092:      file name.
        !          1093: 
        !          1094:   3. Undo your change in `cccp.c', or reinstall the original version,
        !          1095:      and do `make cpp' again.
        !          1096: 
        !          1097:   4. Copy this final version of GNU cpp into `/lib/cpp'.
        !          1098: 
        !          1099:   5. Replace every occurrence of `obstack_free' in the file `tree.c'
        !          1100:      with `_obstack_free'.
        !          1101: 
        !          1102:   6. Run `make' to get the first-stage GNU CC.
        !          1103: 
        !          1104:   7. Reinstall the original version of `/lib/cpp'.
        !          1105: 
        !          1106:   8. Now you can compile GNU CC with itself and install it in the
        !          1107:      normal fashion.
        !          1108: 
        !          1109: 
        !          1110: File: gcc.info,  Node: SCO Install,  Next: Unos Install,  Prev: 3B1 Install,  Up: Installation
        !          1111: 
        !          1112: Installing GNU CC on SCO System V 3.2
        !          1113: =====================================
        !          1114: 
        !          1115:    The compiler that comes with this system does not work properly with
        !          1116: `-O'.  Therefore, you should redefine the Make variable `CCLIBFLAGS'
        !          1117: not to use `-O'.
        !          1118: 
        !          1119:    In addition, the compiler produces incorrect output when compiling
        !          1120: parts of GNU CC; the resulting executable `cc1' does not work properly
        !          1121: when it is used with `-O'.
        !          1122: 
        !          1123:    Therefore, what you must do after building the first stage is use
        !          1124: GNU CC to compile itself without optimization.  Here is how:
        !          1125: 
        !          1126:      make -k cc1 CC="./gcc -B./"
        !          1127: 
        !          1128:    You can think of this as "stage 1.1" of the installation process. 
        !          1129: However, using this command has the effect of discarding the faulty
        !          1130: stage 1 executable for `cc1' and replacing it with stage 1.1.  You can
        !          1131: then proceed with `make stage1' and the rest of installation.
        !          1132: 
        !          1133:    On Xenix, the same thing is necessary; in addition, you may have to
        !          1134: remove `-g' from the options used with `cc', and you may have to
        !          1135: simplify complicated statements in the sources of GNU CC to get them
        !          1136: to compile.
        !          1137: 
        !          1138: 
        !          1139: File: gcc.info,  Node: Unos Install,  Next: VMS Install,  Prev: SCO Install,  Up: Installation
        !          1140: 
        !          1141: Installing GNU CC on Unos
        !          1142: =========================
        !          1143: 
        !          1144:    Use `configure unos' for building on Unos.
        !          1145: 
        !          1146:    The Unos assembler is named `casm' instead of `as'.  For some
        !          1147: strange reason linking `/bin/as' to `/bin/casm' changes the behavior,
        !          1148: and does not work.  So, when installing GNU CC, you should install the
        !          1149: following script as `as' in the subdirectory where the passes of GCC
        !          1150: are installed:
        !          1151: 
        !          1152:      #!/bin/sh
        !          1153:      casm $*
        !          1154: 
        !          1155:    The default Unos library is named `libunos.a' instead of `libc.a'. 
        !          1156: To allow GNU CC to function, either change all references to `-lc' in
        !          1157: `gcc.c' to `-lunos' or link `/lib/libc.a' to `/lib/libunos.a'.
        !          1158: 
        !          1159:    When compiling GNU CC with the standard compiler, to overcome bugs
        !          1160: in the support of `alloca', do not use `-O' when making stage 2.  Then
        !          1161: use the stage 2 compiler with `-O' to make the stage 3 compiler.  This
        !          1162: compiler will have the same characteristics as the usual stage 2
        !          1163: compiler on other systems.  Use it to make a stage 4 compiler and
        !          1164: compare that with stage 3 to verify proper compilation.
        !          1165: 
        !          1166:    Unos uses memory segmentation instead of demand paging, so you will
        !          1167: need a lot of memory.  5 Mb is barely enough if no other tasks are
        !          1168: running.  If linking `cc1' fails, try putting the object files into a
        !          1169: library and linking from that library.
        !          1170: 
        !          1171: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.