--- gcc/gcc.texinfo 2018/04/24 16:45:37 1.1 +++ gcc/gcc.texinfo 2018/04/24 16:47:28 1.1.1.3 @@ -39,9 +39,9 @@ Free Software Foundation instead of in t @sp 2 @center Richard M. Stallman @sp 3 -@center last updated 3 October 1988 +@center last updated 18 November 1988 @sp 1 -@center for version 1.29 +@center for version 1.31 @page @vskip 0pt plus 1filll Copyright @copyright{} 1988 Free Software Foundation, Inc. @@ -434,6 +434,11 @@ to @code{unsigned int}. Out-of-range floating point literals are not an error. @item +All automatic variables not declared @code{register} are preserved by +@code{longjmp}. Ordinarily, GNU C follows ANSI C: automatic variables +not declared @code{volatile} may be clobbered. + +@item In the preprocessor, comments convert to nothing at all, rather than to a space. This allows traditional token concatenation. @@ -497,9 +502,9 @@ GNU assembler and linker in order to wor This feature will probably be eliminated. It was intended to enable GDB to read the symbol table faster, but it doesn't result in enough of a speedup to be worth the larger object files and executables. We -are working on other ways of making GDB start faster, which work with -DBX format debugging information and could be made to work with SDB -format. +are working on other ways of making GDB start even faster, which work +with DBX format debugging information and could be made to work with +SDB format. @item -w Inhibit all warning messages. @@ -1012,7 +1017,12 @@ the file. On a Sequent system, go to the Berkeley universe. @item -Choose configuration files. +Choose configuration files. The easy way to do this is to run the +command file @file{config.gcc} with a single argument, which is the +name of the machine as it appears in the @file{tm-@var{machine}.h} +file name. + +Here we spell out what files you need to set up: @itemize @bullet @item @@ -1021,21 +1031,24 @@ config file for the machine you are usin file is responsible for defining information about the host machine. It includes @file{tm.h}. -The file's name should be @file{config-@var{machine}.h}, with these +The file's name should be @file{xm-@var{machine}.h}, with these exceptions: @table @file -@item config-vms.h +@item xm-vms.h for vaxen running VMS. -@item config-vaxv.h +@item xm-vaxv.h for vaxen running system V. -@item config-i386v.h +@item xm-i386v.h for Intel 80386's running system V. -@item config-sun4.h +@item xm-sunos4.h for Suns (model 2, 3 or 4) running @emph{operating system} version 4. -@item config-hp9k3.h +(Use @file{xm-m68k.h} or @file{xm-sparc.h} for version 3.) +@item xm-sun386i.h +for Sun roadrunner running any version of the operating system. +@item xm-hp9k320.h for the HP 9000 series 300. -@item config-gnx.h +@item xm-gnx.h for the ns32000 running Genix @end table @@ -1056,10 +1069,17 @@ directly. Instead, use one of these fil for Sun 3 machines. @item tm-sun2.h for Sun 2 machines. +@item tm-sun4os3.h +for Sun 4 machines using operating system version 3. +@item tm-sparc.h +for Sun 4 machines using operating system version 4. +@item tm-sun386i.h +for Sun 386 machines. @item tm-3b1.h for AT&T 3b1 (aka 7300 Unix PC). @item tm-isi68.h -for Integrated Solutions systems. +for Integrated Solutions systems. This file assumes you +use the GNU assembler. @item tm-news800.h for SONY News systems. @item tm-hp9k320.h @@ -1075,17 +1095,15 @@ instructions will appear here in the fut For the vax, use @file{tm-vax.h} on BSD Unix, @file{tm-vaxv.h} on system V, or @file{tm-vms.h} on VMS.@refill -For the SPARC (Sun 4), use @file{tm-sparc.h}. - For the Motorola 88000, use @file{tm-m88k.h}. The support for the 88000 has a few unfinished spots because there was no way to run the -output. Bugs are suspected in handling of branch-tables and in -the function prologue and epilogue. +output. Bugs are suspected in handling of branch-tables and in the +function prologue and epilogue. For the 80386, don't use @file{tm-i386.h} directly. Use @file{tm-i386v.h} if the target machine is running system V, @file{tm-seq386.h} for a Sequent 386 system, or @file{tm-compaq.h} for -a Compaq. +a Compaq, or @file{tm-sun386i.h} for a Sun 386 system. For the 32000, use @file{tm-sequent.h} if you are using a Sequent machine, or @file{tm-encore.h} for an Encore machine, or @@ -1100,7 +1118,9 @@ Note that Encore systems are supported o @item Make a symbolic link named @file{md} to the machine description -pattern file (its name should be @file{@var{machine}.md}). +pattern file. Its name should be @file{@var{machine}.md}, but +@var{machine} is often not the same as the name used in the +@file{tm.h} file because the @file{md} files are more general. @item Make a symbolic link named @file{aux-output.c} to the output @@ -1127,6 +1147,11 @@ properly without special pains. @item Build the compiler. Just type @samp{make} in the compiler directory. +Ignore any warnings you may see about ``statement not reached'' in the +@file{insn-emit.c}; they are normal. Any other compilation errors may +represent bugs in the port to your machine or operating system, and +should be investigated and reported (@pxref{Bugs}). + @item Move the first-stage object files and executables into a subdirectory with this command: @@ -1213,10 +1238,9 @@ Alternatively, on Sun systems and 4.3BSD include files by running the shell script @file{fixincludes}. This installs modified, corrected copies of the files @file{ioctl.h}, @file{ttychars.h} and many others, in a special directory where only -GNU CC will normally look for them. - -See the file @file{fixincludes} for a list of all the files we know to -require correction. +GNU CC will normally look for them. This script will work on various +systems because it choose the files by searching all the system +headers for the problem cases that we know about. @end enumerate If you cannot install the compiler's passes and run-time support in @@ -1247,7 +1271,7 @@ recompile, here is how: @enumerate @item -Copy the file @file{tm-vms.h} to @file{tm.h}, @file{config-vms.h} to +Copy the file @file{tm-vms.h} to @file{tm.h}, @file{xm-vms.h} to @file{config.h}, @file{vax.md} to @file{md.} and @file{output-vax.c} to @file{aux-output.c}.@refill @@ -1322,6 +1346,55 @@ DBX rejects some files produced by GNU C constructs in output from PCC. Until someone can supply a coherent description of what is valid DBX input and what is not, there is nothing I can do about these problems. You are on your own. + +@item +Users often think it is a bug when GNU CC reports an error for code +like this: + +@example +int foo (short); + +int foo (x) + short x; +@{@dots{}@} +@end example + +This code really is erroneous, because the old-style non-prototype +definition passes subword integers in their promoted types. In other +words, the argument is really an @code{int}, not a @code{short}. The +correct prototype is this: + +@example +int foo (int); +@end example + +@item +Users often think it is a bug when GNU CC reports an error for code +like this: + +@example +int foo (struct mumble *); + +struct mumble @{ @dots{} @}; + +int foo (struct mumble *x) +@{ @dots{} @} +@end example + +This code really is erroneous, because the scope of @code{struct +mumble} the prototype is limited to the argument list containing it. +It does not refer to the @code{struct mumble} defined with file scope +immediately below---they are two unrelated types with similar names in +different scopes. + +But in the definition of @code{foo}, the file-scope type is used +because that is available to be inherited. Thus, the definition and +the prototype do not match, and you get an error. + +This behavior may seem silly, but it's what the ANSI standard +specifies. It is easy enough for you to make your code work by moving +the definition of @code{struct mumble} above the prototype. I don't +think it's worth being incompatible for. @end itemize @node Incompatibilities, Extensions, Trouble, Top @@ -1400,6 +1473,11 @@ in it. If you use the @samp{-W} option with the @samp{-O} option, you will get a warning when GNU CC thinks such a problem might be possible. +The @samp{-traditional} option directs GNU C to put variables in +the stack by default, rather than in registers, in functions that +call @code{setjmp}. This results in the behavior found in +traditional C compilers. + @item Declarations of external variables and functions within a block apply only to the block containing the declaration. In other words, they @@ -7900,10 +7978,10 @@ definitions are correct for most assembl @node Config,, Machine Macros, Top @chapter The Configuration File -The configuration file @file{config-@var{machine}.h} contains macro -definitions that describe the machine and system on which the compiler is -running. Most of the values in it are actually the same on all machines -that GNU CC runs on, so most all configuration files are identical. But +The configuration file @file{xm-@var{machine}.h} contains macro definitions +that describe the machine and system on which the compiler is running. +Most of the values in it are actually the same on all machines that GNU CC +runs on, so large parts of all configuration files are identical. But there are some macros that vary: @table @code @@ -7916,5 +7994,10 @@ A C expression for the status code to be exits without serious errors. @end table +In addition, configuration files for system V define @code{bcopy}, +@code{bzero} and @code{bcmp} as aliases. Some files define @code{alloca} +as a macro when compiled with GNU CC, in order to take advantage of the +benefit of GNU CC's built-in @code{alloca}. + @contents @bye