summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/gcc/f/INSTALL
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/usr.bin/gcc/f/INSTALL')
-rw-r--r--gnu/usr.bin/gcc/f/INSTALL142
1 files changed, 74 insertions, 68 deletions
diff --git a/gnu/usr.bin/gcc/f/INSTALL b/gnu/usr.bin/gcc/f/INSTALL
index b0e71c08674..01fefceae0d 100644
--- a/gnu/usr.bin/gcc/f/INSTALL
+++ b/gnu/usr.bin/gcc/f/INSTALL
@@ -51,7 +51,7 @@ follow the `g77' installation instructions:
Without an applicable `gcc' source tree, you cannot build `g77'.
You can obtain an FSF distribution of `gcc' from the FSF.
-`g77-0.5.18.tar.gz'
+`g77-0.5.19.tar.gz'
You probably have already unpacked this distribution, or you are
reading an advanced copy of this manual, which is contained in
this distribution. This distribution approximately 1MB large.
@@ -61,7 +61,7 @@ follow the `g77' installation instructions:
100MB disk space
For a complete "bootstrap" build, about 100MB of disk space is
- required for `g77' by the author's current Linux system.
+ required for `g77' by the author's current GNU/Linux system.
Some juggling can reduce the amount of space needed; during the
bootstrap process, once Stage 3 starts, during which the version
@@ -177,11 +177,10 @@ General Problems
`LD' and `AR' in the appropriate ways.
* `g77' currently requires application of a patch file to the gcc
- compiler tree (at least up through gcc version 2.7.0). The
- necessary patches should be folded in to the mainline gcc
- distribution.
+ compiler tree. The necessary patches should be folded in to the
+ mainline gcc distribution.
- (Some combinations of versions of `g77' and `gcc' might actually
+ Some combinations of versions of `g77' and `gcc' might actually
*require* no patches, but the patch files will be provided anyway
as long as there are more changes expected in subsequent releases.
These patch files might contain unnecessary, but possibly helpful,
@@ -260,7 +259,7 @@ is assumed that the source distributions themselves already reside in
system:
/usr/FSF/gcc-2.7.2.tar.gz
- /usr/FSF/g77-0.5.18.tar.gz
+ /usr/FSF/g77-0.5.19.tar.gz
Users of the following systems should not blindly follow these
quick-start instructions, because of problems their systems have coping
@@ -283,49 +282,49 @@ trouble, including possibly breaking existing programs for other users
of your system. Before doing so, it is wise to review the explanations
of some of the steps. These explanations follow this list of steps.
- sh[ 1]# `cd /usr/src'
+ sh[ 1]# cd /usr/src
- sh[ 2]# `gunzip -c < /usr/FSF/gcc-2.7.2.tar.gz | tar xf -'
+ sh[ 2]# gunzip -c < /usr/FSF/gcc-2.7.2.tar.gz | tar xf -
[Might say "Broken pipe"...that is normal on some systems.]
- sh[ 3]# `gunzip -c < /usr/FSF/g77-0.5.18.tar.gz | tar xf -'
+ sh[ 3]# gunzip -c < /usr/FSF/g77-0.5.19.tar.gz | tar xf -
["Broken pipe" again possible.]
- sh[ 4]# `ln -s gcc-2.7.2 gcc'
+ sh[ 4]# ln -s gcc-2.7.2 gcc
- sh[ 5]# `ln -s g77-0.5.18 g77'
+ sh[ 5]# ln -s g77-0.5.19 g77
- sh[ 6]# `mv -i g77/* gcc'
+ sh[ 6]# mv -i g77/* gcc
[No questions should be asked by mv here; or, you made a mistake.]
- sh[ 7]# `patch -p1 -V t -d gcc-2.7.2 < gcc-2.7.2/f/gbe/2.7.2.diff'
+ sh[ 7]# patch -p1 -V t -d gcc-2.7.2 < gcc-2.7.2/f/gbe/2.7.2.diff
[Unless patch complains about rejected patches, this step worked.]
- sh[ 8]# `cd gcc'
- sh[ 9]# `touch f77-install-ok'
+ sh[ 8]# cd gcc
+ sh[ 9]# touch f77-install-ok
[Do not do the above if your system already has an f77
command, unless you've checked that overwriting it
is okay.]
- sh[10]# `touch f2c-install-ok'
+ sh[10]# touch f2c-install-ok
[Do not do the above if your system already has an f2c
command, unless you've checked that overwriting it
- is okay. Else, `touch f2c-exists-ok'.]
- sh[11]# `./configure --prefix=/usr'
+ is okay. Else, touch f2c-exists-ok.]
+ sh[11]# ./configure --prefix=/usr
[Do not do the above if gcc is not installed in /usr/bin.
- You might need a different `--prefix=...', as
+ You might need a different --prefix=..., as
described below.]
- sh[12]# `make bootstrap'
+ sh[12]# make bootstrap
[This takes a long time, and is where most problems occur.]
- sh[13]# `rm -fr stage1'
+ sh[13]# rm -fr stage1
- sh[14]# `make -k install'
+ sh[14]# make -k install
[The actual installation.]
- sh[15]# `g77 -v'
+ sh[15]# g77 -v
[Verify that g77 is installed, obtain version info.]
sh[16]#
@@ -344,7 +343,7 @@ Step 1: `cd /usr/src'
installed version of `g77' and `gcc' in any case.
Step 4: `ln -s gcc-2.7.2 gcc'
-Step 5: `ln -s g77-0.5.18 g77'
+Step 5: `ln -s g77-0.5.19 g77'
These commands mainly help reduce typing, and help reduce visual
clutter in examples in this manual showing what to type to install
`g77'.
@@ -354,7 +353,7 @@ Step 5: `ln -s g77-0.5.18 g77'
Step 6: `mv -i g77/* gcc'
After doing this, you can, if you like, type `rm g77' and `rmdir
- g77-0.5.18' to remove the empty directory and the symbol link to
+ g77-0.5.19' to remove the empty directory and the symbol link to
it. But, it might be helpful to leave them around as quick
reminders of which version(s) of `g77' are installed on your
system.
@@ -462,12 +461,12 @@ generally only the documentation is immediately usable.
A sequence of commands typically used to unpack `gcc' and `g77' is:
- sh# `cd /usr/src'
- sh# `gunzip -d < /usr/FSF/gcc-2.7.2.tar.gz | tar xf -'
- sh# `gunzip -d < /usr/FSF/g77-0.5.18.tar.gz | tar xf -'
- sh# `ln -s gcc-2.7.2 gcc'
- sh# `ln -s g77-0.5.18 g77'
- sh# `mv -i g77/* gcc'
+ sh# cd /usr/src
+ sh# gunzip -d < /usr/FSF/gcc-2.7.2.tar.gz | tar xf -
+ sh# gunzip -d < /usr/FSF/g77-0.5.19.tar.gz | tar xf -
+ sh# ln -s gcc-2.7.2 gcc
+ sh# ln -s g77-0.5.19 g77
+ sh# mv -i g77/* gcc
*Notes:* The commands beginning with `gunzip...' might print `Broken
pipe...' as they complete. That is nothing to worry about, unless you
@@ -520,6 +519,12 @@ are using either an old, unsupported version, or a release one that is
newer than the newest `gcc' version supported by the version of `g77'
you have.
+ As of version 0.5.18, `g77' modifies the version number of `gcc' via
+the pertinent patches. This is done because the resulting version of
+`gcc' is deemed sufficiently different from the vanilla distribution to
+make it worthwhile to present, to the user, information signaling the
+fact that there are some differences.
+
GNU version numbers make it easy to figure out whether a particular
version of a distribution is newer or older than some other version of
that distribution. The format is, generally, MAJOR.MINOR.PATCH, with
@@ -547,10 +552,11 @@ the version number for `gcc' differs only in the PATCH field, you might
as well try applying the `g77' patch that is for the newest version of
`gcc' having the same MAJOR and MINOR fields, as this is likely to work.
- So, for example, if `g77' has support for versions 2.7.0 and 2.7.1,
-it is likely that `gcc-2.7.2' would work well with `g77' by using the
-`2.7.1.diff' patch file provided with `g77' (aside from some offsets
-reported by `patch', which usually are harmless).
+ So, for example, if a particular version of `g77' has support for
+`gcc' versions 2.7.0 and 2.7.1, it is likely that `gcc-2.7.2' would
+work well with `g77' by using the `2.7.1.diff' patch file provided with
+`g77' (aside from some offsets reported by `patch', which usually are
+harmless).
However, `gcc-2.8.0' would almost certainly not work with that
version of `g77' no matter which patch file was used, so a new version
@@ -592,16 +598,12 @@ type `rm -i *.~*~'.
*Note:* `g77''s configuration file `gcc/f/config-lang.in' ensures
that the source code for the version of `gcc' being configured has at
-least one GBE function required specifically by `g77'. This function
-was added to `gcc-2.7.1', making the patch file
-`g77-0.5.17/f/gbe/2.7.1.diff' empty of actual patches.
-
- For `gcc-2.7.0' and earlier, this configuration-time checking should
-catch failure to apply the correct patch and, if so caught, it should
-abort the configuration with an explanation. *Please* do not try to
-disable the check, otherwise `g77' might well appear to build and
-install correctly, and even appear to compile correctly, but could
-easily produce broken code.
+least one indication of being patched as required specifically by `g77'.
+This configuration-time checking should catch failure to apply the
+correct patch and, if so caught, should abort the configuration with an
+explanation. *Please* do not try to disable the check, otherwise `g77'
+might well appear to build and install correctly, and even appear to
+compile correctly, but could easily produce broken code.
`diff -rcp2N' is used to create the patch files in `gcc/f/gbe/'.
@@ -700,7 +702,11 @@ change to `gcc/f/proj.h': edit the line reading
#define FFEPROJ_STRTOUL 1 ...
-by replacing the `1' with `0'.
+by replacing the `1' with `0'. Or, you can avoid editing the source by
+adding
+ CFLAGS='-DFFEPROJ_STRTOUL=0 -g'
+ to the command line for `make' when you invoke it. (`-g' is the
+default for `CFLAGS'.)
This causes a minimal version of `strtoul()' provided as part of the
`g77' distribution to be compiled and linked into whatever `g77'
@@ -709,7 +715,8 @@ function in their system libraries.
Similarly, a minimal version of `bsearch()' is available and can be
enabled by editing a line similar to the one for `strtoul()' above in
-`gcc/f/proj.h', if your system libraries lack `bsearch()'.
+`gcc/f/proj.h', if your system libraries lack `bsearch()'. The method
+of overriding `X_CFLAGS' may also be used.
These are not problems with `g77', which requires an ANSI C
environment. You should upgrade your system to one that provides a
@@ -942,8 +949,8 @@ work.
Here are some commands you can try, and output typically printed by
them when they work:
- sh# `cd /usr/src/gcc'
- sh# `./g77 --driver=./xgcc -B./ -v'
+ sh# cd /usr/src/gcc
+ sh# ./g77 --driver=./xgcc -B./ -v
./xgcc -B./ -v -fnull-version -o /tmp/gfa03648 ...
Reading specs from ./specs
gcc version 2.7.1
@@ -959,11 +966,11 @@ them when they work:
End of search list.
./f771 /tmp/cca03648.i -quiet -dumpbase null.F -version ...
GNU F77 version 2.7.1 (80386, BSD syntax) compiled ...
- GNU Fortran Front End version 0.5.18 compiled: ...
+ GNU Fortran Front End version 0.5.19 compiled: ...
as -o /tmp/cca036481.o /tmp/cca03648.s
ld -m i386linux -o /tmp/gfa03648 /usr/lib/crt0.o -L. ...
/usr/lib/crt0.o(.text+0x35): undefined reference to `main'
- sh# `./xgcc -B./ -v -o /tmp/delete-me -xc /dev/null -xnone'
+ sh# ./xgcc -B./ -v -o /tmp/delete-me -xc /dev/null -xnone
Reading specs from ./specs
gcc version 2.7.1
./cpp -lang-c -v -isystem ./include -undef ...
@@ -1077,9 +1084,9 @@ other versions of `gcc', this was called `make realclean'), and, to
ensure that `bison' is not invoked by `make' during the build, type
these commands:
- sh# `cd gcc'
- sh# `touch bi-parser.c bi-parser.h c-parse.c c-parse.h cexp.c'
- sh# `touch cp/parse.c cp/parse.h objc-parse.c'
+ sh# cd gcc
+ sh# touch bi-parser.c bi-parser.h c-parse.c c-parse.h cexp.c
+ sh# touch cp/parse.c cp/parse.h objc-parse.c
sh#
These commands update the date-time-modified information for all the
@@ -1116,7 +1123,7 @@ file `gcc/COPYING' thoroughly).
Then, consider your target audience and decide where `g77' should be
installed.
- For systems like Linux that have no native Fortran compiler (or
+ For systems like GNU/Linux that have no native Fortran compiler (or
where `g77' could be considered the native compiler for Fortran and
`gcc' for C, etc.), you should definitely configure `g77' for
installation in `/usr/bin' instead of `/usr/local/bin'. Specify the
@@ -1247,6 +1254,11 @@ larger-sized entities to be put on the stack (which can improve
run-time performance, as it presents more opportunities for the GBE to
optimize the generated code).
+ *Note:* Putting more variables and arrays on the stack might cause
+problems due to system-dependent limits on stack size. Also, the value
+of `FFECOM_sizeMAXSTACKITEM' has no effect on automatic variables and
+arrays. *Note But-bugs::, for more information.
+
Floating-point Bit Patterns
---------------------------
@@ -1257,8 +1269,7 @@ improvements for g77-0.6 will give it the capabilities it needs to not
have to crash the build but rather generate correct code for the target.
(Currently, `g77' would generate bad code under such circumstances if
it didn't crash during the build, e.g. when compiling a source file
-that does something like `EQUIVALENCE (I,R)' and `DATA
-R/3.1415926535/'.)
+that does something like `EQUIVALENCE (I,R)' and `DATA R/9.43578/'.)
Initialization of Large Aggregate Areas
---------------------------------------
@@ -1298,14 +1309,9 @@ Alpha Problems
target configuration that is not basically a 32-bit machine (such as an
Alpha, which is a 64-bit machine, especially if it has a 64-bit
operating system running on it). This is because `g77' is known to not
-work properly on such configurations, although the reasons for this are
-not fully explored. This is expected to be fixed at 0.6, at which
-point the warning would be dropped. (The reason the unexplored
-problems are expected to be fixed at 0.6 is because some known internal
-design problems `g77' has, which reduce portability and the ability to
-configure it as a cross-compiler, are presumed to be at least partly
-responsible for the problems being encountered on the Alpha. The
-problems remain unexplored partly because the known problems exist and
-are scheduled to be addressed anyway. Plus, the `g77' maintainer does
-not yet possess an Alpha workstation of his own.)
+work properly on such configurations. This is expected to be
+completely fixed at 0.6, at which point the warning would be dropped.
+
+ (Version 0.5.20 is expected to solve most of these problems, though,
+as of this writing, work is still progressing in this area.)