+Tue Sep 9 01:59:35 1997 Craig Burley <burley@gnu.ai.mit.edu>
+
+ * Version 0.5.21 released.
+
+Tue Sep 9 00:31:01 1997 Craig Burley <burley@gnu.ai.mit.edu>
+
+ * intdoc.c (dumpem): Put appropriate commentary in
+ output file, so readers know it isn't source.
+
+Wed Aug 27 08:08:25 1997 Craig Burley <burley@gnu.ai.mit.edu>
+
+ * proj.h: Always #include "config.j" first, to pick up
+ gcc's configuration.
+ * com.c: Change bcopy() and bzero() calls to memcpy()
+ and memset() calls, to make more of g77 ANSI C.
+
+1997-08-26 Dave Love <d.love@dl.ac.uk>
+
+ * Make-lang.in ($(srcdir)/f/runtime/configure,
+ $(srcdir)/f/runtime/libU77/configure): Fix for when srcdir isn't
+ relative.
+
Tue Aug 26 05:59:21 1997 Craig Burley <burley@gnu.ai.mit.edu>
* ansify.c (main): Make sure readers of stdout know
available--in fact, a complete GNU UNIX system can be put together
on most systems, if desired.
-`gcc-2.7.2.2.tar.gz'
+ The version of GNU `gzip' used to package this release is 1.24.
+ (The version of GNU `tar' used to package this release is 1.11.2.)
+
+`gcc-2.7.2.3.tar.gz'
You need to have this, or some other applicable, version of `gcc'
on your system. The version should be an exact copy of a
- distribution from the FSF. It is approximately 7MB large.
+ distribution from the FSF. Its size is approximately 7.1MB.
- If you've already unpacked `gcc-2.7.2.2.tar.gz' into a directory
- (named `gcc-2.7.2.2') called the "source tree" for `gcc', you can
+ If you've already unpacked `gcc-2.7.2.3.tar.gz' into a directory
+ (named `gcc-2.7.2.3') called the "source tree" for `gcc', you can
delete the distribution itself, but you'll need to remember to
skip any instructions to unpack this distribution.
You can obtain an FSF distribution of `gcc' from the FSF.
`g77-0.5.21.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.
+ You probably have already unpacked this package, or you are
+ reading an advance copy of these installation instructions, which
+ are contained in this distribution. The size of this package is
+ approximately 1.5MB.
You can obtain an FSF distribution of `g77' from the FSF, the same
way you obtained `gcc'.
-100MB disk space
- For a complete "bootstrap" build, about 100MB of disk space is
- 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
- of `gcc' that has been copied into the `stage2/' directory is used
- to rebuild the system, you can delete the `stage1/' directory to
- free up some space.
-
- It is likely that many systems don't require the complete
- bootstrap build, as they already have a recent version of `gcc'
- installed. Such systems might be able to build `g77' with only
- about 75MB of free space.
+Enough disk space
+ The amount of disk space needed to unpack, build, install, and use
+ `g77' depends on the type of system you're using, how you build
+ `g77', and how much of it you install (primarily, which languages
+ you install).
+
+ The sizes shown below assume all languages distributed in
+ `gcc-2.7.2.3', plus `g77', will be built and installed. These
+ sizes are indicative of GNU/Linux systems on Intel x86 running
+ COFF and on Digital Alpha (AXP) systems running ELF. These should
+ be fairly representative of 32-bit and 64-bit systems,
+ respectively.
+
+ Note that all sizes are approximate and subject to change without
+ notice! They are based on preliminary releases of g77 made shortly
+ before the public beta release.
+
+ -- `gcc' and `g77' distributions occupy 8.6MB packed, 35MB
+ unpacked. These consist of the source code and documentation,
+ plus some derived files (mostly documentation), for `gcc' and
+ `g77'. Any deviations from these numbers for different kinds
+ of systems are likely to be very minor.
+
+ -- A "bootstrap" build requires an additional 67.3MB for a
+ total of 102MB on an ix86, and an additional 98MB for a total
+ of 165MB on an Alpha.
+
+ -- Removing `gcc/stage1' after the build recovers 10.7MB for a
+ total of 91MB on an ix86, and recovers ??MB for a total of
+ ??MB on an Alpha.
+
+ After doing this, the integrity of the build can still be
+ verified via `make compare', and the `gcc' compiler modified
+ and used to build itself for testing fairly quickly, using
+ the copy of the compiler kept in `gcc/stage2'.
+
+ -- Removing `gcc/stage2' after the build further recovers
+ 27.3MB for a total of 64.3MB, and recovers ??MB for a total
+ of ??MB on an Alpha.
+
+ After doing this, the compiler can still be installed,
+ especially if GNU `make' is used to avoid gratuitous rebuilds
+ (or, the installation can be done by hand).
+
+ -- Installing `gcc' and `g77' copies 14.9MB onto the `--prefix'
+ disk for a total of 79.2MB on an ix86, and copies ??MB onto
+ the `--prefix' disk for a total of ??MB on an Alpha.
+
+ After installation, if no further modifications and builds of
+ `gcc' or `g77' are planned, the source and build directory may be
+ removed, leaving the total impact on a system's disk storage as
+ that of the amount copied during installation.
+
+ Systems with the appropriate version of `gcc' installed don't
+ require the complete bootstrap build. Doing a "straight build"
+ requires about as much space as does a bootstrap build followed by
+ removing both the `gcc/stage1' and `gcc/stage2' directories.
+
+ Installing `gcc' and `g77' over existing versions might require
+ less *new* disk space, but note that, unlike many products, `gcc'
+ installs itself in a way that avoids overwriting other installed
+ versions of itself, so that other versions may easily be invoked
+ (via `gcc -V VERSION').
+
+ So, the amount of space saved as a result of having an existing
+ version of `gcc' and `g77' already installed is not
+ much--typically only the command drivers (`gcc', `g77', `g++', and
+ so on, which are small) and the documentation is overwritten by
+ the new installation. The rest of the new installation is done
+ without replacing existing installed versions (assuming they have
+ different version numbers).
`patch'
Although you can do everything `patch' does yourself, by hand,
In any case, you can apply patches by hand--patch files are
designed for humans to read them.
+ The version of GNU `patch' used to develop this release is 2.4.
+
`make'
Your system must have `make', and you will probably save yourself
a lot of trouble if it is GNU `make' (sometimes referred to as
`gmake').
+ The version of GNU `make' used to develop this release is 3.73.
+
`cc'
Your system must have a working C compiler.
distribution. You can obtain `bison' the same way you obtained
`gcc' and `g77'.
+ The version of GNU `bison' used to develop this release is 1.25.
+
*Note Missing bison?::, for information on how to work around not
having `bison'.
need for it. You can obtain `makeinfo' the same way you obtained
`gcc' and `g77'.
+ The version of GNU `makeinfo' used to develop this release is
+ 1.68, from GNU `texinfo' version 3.11.
+
*Note Missing makeinfo?::, for information on getting around the
lack of `makeinfo'.
-`root' access
+`sed'
+ All UNIX systems have `sed', but some have a broken version that
+ cannot handle configuring, building, or installing `gcc' or `g77'.
+
+ The version of GNU `sed' used to develop this release is 2.05.
+ (Note that GNU `sed' version 3.0 was withdrawn by the FSF--if you
+ happen to have this version installed, replace it with version
+ 2.05 immediately. See a GNU distribution site for further
+ explanation.)
+
+`root' access or equivalent
To perform the complete installation procedures on a system, you
- need to have `root' access to that system, or equivalent access.
+ need to have `root' access to that system, or equivalent access to
+ the `--prefix' directory tree specified on the `configure' command
+ line.
Portions of the procedure (such as configuring and building `g77')
can be performed by any user with enough disk space and virtual
* Improvements to the way `libf2c' is built could make building
`g77' as a cross-compiler easier--for example, passing and using
- `LD' and `AR' in the appropriate ways.
+ `$(LD)' and `$(AR)' in the appropriate ways.
* There are still some challenges putting together the right
run-time libraries (needed by `libf2c') for a target system,
`/usr/FSF', a naming convention used by the author of `g77' on his own
system:
- /usr/FSF/gcc-2.7.2.2.tar.gz
+ /usr/FSF/gcc-2.7.2.3.tar.gz
/usr/FSF/g77-0.5.21.tar.gz
Users of the following systems should not blindly follow these
sh[ 1]# cd /usr/src
- sh[ 2]# gunzip -c < /usr/FSF/gcc-2.7.2.2.tar.gz | tar xf -
+ sh[ 2]# gunzip -c < /usr/FSF/gcc-2.7.2.3.tar.gz | tar xf -
[Might say "Broken pipe"...that is normal on some systems.]
sh[ 3]# gunzip -c < /usr/FSF/g77-0.5.21.tar.gz | tar xf -
["Broken pipe" again possible.]
- sh[ 4]# ln -s gcc-2.7.2.2 gcc
+ sh[ 4]# ln -s gcc-2.7.2.3 gcc
sh[ 5]# ln -s g77-0.5.21 g77
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 < gcc/f/gbe/2.7.2.2.diff
+ sh[ 7]# patch -p1 -V t -d gcc < gcc/f/gbe/2.7.2.3.diff
[Unless patch complains about rejected patches, this step worked.]
sh[ 8]# cd gcc
sh[12]# make bootstrap
[This takes a long time, and is where most problems occur.]
- sh[13]# rm -fr stage1
+ sh[13]# make compare
+ [This verifies that the compiler is `sane'. Only
+ the file `f/zzz.o' (aka `tmp-foo1' and `tmp-foo2')
+ should be in the list of object files this command
+ prints as having different contents. If other files
+ are printed, you have likely found a g77 bug.]
- sh[14]# make -k install
+ sh[14]# rm -fr stage1
+
+ sh[15]# make -k install
[The actual installation.]
- sh[15]# g77 -v
+ sh[16]# g77 -v
[Verify that g77 is installed, obtain version info.]
- sh[16]#
+ sh[17]#
*Note Updating Your Info Directory: Updating Documentation, for
information on how to update your system's top-level `info' directory
achieve the same result--a source tree containing version 0.5.21
of `g77'.
-Step 4: `ln -s gcc-2.7.2.2 gcc'
+Step 4: `ln -s gcc-2.7.2.3 gcc'
Step 5: `ln -s g77-0.5.21 g77'
These commands mainly help reduce typing, and help reduce visual
*Note Building gcc::, for complete `g77'-specific information on
this step.
-Step 13: `rm -fr stage1'
+Step 13: `make compare'
+ *Note Where to Port Bugs: Bug Lists, for information on where to
+ report that you observed more than `f/zzz.o' having different
+ contents during this phase.
+
+ *Note How to Report Bugs: Bug Reporting, for information on *how*
+ to report bugs like this.
+
+Step 14: `rm -fr stage1'
You don't need to do this, but it frees up disk space.
-Step 14: `make -k install'
+Step 15: `make -k install'
If this doesn't seem to work, try:
make -k install install-libf77 install-f2c-all
information on entering this manual into your system's list of
texinfo manuals.
-Step 15: `g77 -v'
+Step 16: `g77 -v'
If this command prints approximately 25 lines of output, including
the GNU Fortran Front End version number (which should be the same
as the version number for the version of `g77' you just built and
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.2.tar.gz | tar xf -
- sh# gunzip -d < /usr/FSF/g77-0.5.21.tar.gz | tar xf -
- sh# ln -s gcc-2.7.2.2 gcc
+ sh# gunzip -c /usr/FSF/gcc-2.7.2.3.tar.gz | tar xf -
+ sh# gunzip -c /usr/FSF/g77-0.5.21.tar.gz | tar xf -
+ sh# ln -s gcc-2.7.2.3 gcc
sh# ln -s g77-0.5.21 g77
sh# mv -i g77/* gcc
All three entries should be moved (or copied) into a `gcc' source
tree (typically named after its version number and as it appears in the
-FSF distributions--e.g. `gcc-2.7.2.2').
+FSF distributions--e.g. `gcc-2.7.2.3').
`g77/f' is the subdirectory containing all of the code,
documentation, and other information that is specific to `g77'. The
g77 version 0.5.21
./xgcc -B./ -v -fnull-version -o /tmp/gfa18047 ...
Reading specs from ./specs
- gcc version 2.7.2.2.f.3
+ gcc version 2.7.2.3.f.1
./cpp -lang-c -v -isystem ./include -undef ...
- GNU CPP version 2.7.2.2.f.3 (Linux/Alpha)
+ GNU CPP version 2.7.2.3.f.1 (Linux/Alpha)
#include "..." search starts here:
#include <...> search starts here:
./include
/usr/local/include
/usr/alpha-unknown-linux/include
- /usr/lib/gcc-lib/alpha-unknown-linux/2.7.2.2.f.3/include
+ /usr/lib/gcc-lib/alpha-unknown-linux/2.7.2.3.f.1/include
/usr/include
End of search list.
./f771 /tmp/cca18048.i -fset-g77-defaults -quiet -dumpbase ...
- GNU F77 version 2.7.2.2.f.3 (Linux/Alpha) compiled ...
+ GNU F77 version 2.7.2.3.f.1 (Linux/Alpha) compiled ...
GNU Fortran Front End version 0.5.21 compiled: ...
as -nocpp -o /tmp/cca180481.o /tmp/cca18048.s
ld -G 8 -O1 -o /tmp/gfa18047 /usr/lib/crt0.o -L. ...
__G77_LIBF77_VERSION__: 0.5.21
@(#)LIBF77 VERSION 19970404
__G77_LIBI77_VERSION__: 0.5.21
- @(#) LIBI77 VERSION pjw,dmg-mods 19970527
+ @(#) LIBI77 VERSION pjw,dmg-mods 19970816
__G77_LIBU77_VERSION__: 0.5.21
@(#) LIBU77 VERSION 19970609
sh# ./xgcc -B./ -v -o /tmp/delete-me -xc /dev/null -xnone
Reading specs from ./specs
- gcc version 2.7.2.2.f.3
+ gcc version 2.7.2.3.f.1
./cpp -lang-c -v -isystem ./include -undef ...
- GNU CPP version 2.7.2.2.f.3 (Linux/Alpha)
+ GNU CPP version 2.7.2.3.f.1 (Linux/Alpha)
#include "..." search starts here:
#include <...> search starts here:
./include
/usr/local/include
/usr/alpha-unknown-linux/include
- /usr/lib/gcc-lib/alpha-unknown-linux/2.7.2.2.f.3/include
+ /usr/lib/gcc-lib/alpha-unknown-linux/2.7.2.3.f.1/include
/usr/include
End of search list.
./cc1 /tmp/cca18063.i -quiet -dumpbase null.c -version ...
- GNU C version 2.7.2.2.f.3 (Linux/Alpha) compiled ...
+ GNU C version 2.7.2.3.f.1 (Linux/Alpha) compiled ...
as -nocpp -o /tmp/cca180631.o /tmp/cca18063.s
ld -G 8 -O1 -o /tmp/delete-me /usr/lib/crt0.o -L. ...
/usr/lib/crt0.o: In function `__start':
# - define the names for selecting the language in LANGUAGES.
#
# $(srcdir) must be set to the gcc/ source directory (not gcc/f/).
+#\f
# Extra flags to pass to recursive makes (and to sub-configure).
# Use different quoting rules compared with FLAGS_TO_PASS so we can use
# this to set environment variables as well
# Actual names to use when installing a cross-compiler.
F77_CROSS_NAME = `t='$(program_transform_cross_name)'; echo f77 | sed $$t`
G77_CROSS_NAME = `t='$(program_transform_cross_name)'; echo g77 | sed $$t`
+#\f
# Define the names for selecting f77 in LANGUAGES.
# Note that it would be nice to move the dependency on g77
# into the F77 rule, but that needs a little bit of work
# $(srcdir)/config/$(xmake_file) $(srcdir)/config/$(tmake_file)
# top=`pwd`; cd f/f2c; \
# $${top}/f/f2c/configure --srcdir=$${top}/f/f2c
+#\f
# Build hooks:
# I'm not sure there's a way of getting f2c into here conditionally on
--no-validate news0.texi -o NEWS
$(srcdir)/f/runtime/configure: $(srcdir)/f/runtime/configure.in
- case $(srcdir) in \
- /*) cd f/runtime && $(MAKE) srcdir=$(srcdir)/f/runtime -f $(srcdir)/f/runtime/Makefile.in rebuilt;; \
- *) cd f/runtime && $(MAKE) srcdir=../../$(srcdir)/f/runtime -f ../../$(srcdir)/f/runtime/Makefile.in rebuilt;; \
- esac
+ cd $(srcdir)/f/runtime && $(MAKE) srcdir=. -f Makefile.in rebuilt
$(srcdir)/f/runtime/libU77/configure: $(srcdir)/f/runtime/libU77/configure.in
- case $(srcdir) in \
- /*) cd f/runtime && $(MAKE) srcdir=$(srcdir)/f/runtime -f $(srcdir)/f/runtime/Makefile.in rebuilt;; \
- *) cd f/runtime && $(MAKE) srcdir=../../$(srcdir)/f/runtime -f ../../$(srcdir)/f/runtime/Makefile.in rebuilt;; \
- esac
+ cd $(srcdir)/f/runtime && $(MAKE) srcdir=. -f Makefile.in rebuilt
+
f77.rebuilt: $(srcdir)/f/g77.info $(srcdir)/f/BUGS $(srcdir)/f/INSTALL \
$(srcdir)/f/NEWS $(srcdir)/f/runtime/configure \
$(srcdir)/f/runtime/libU77/configure
maybe-f2c:
#For now, omit f2c stuff. -- burley
# case "$(STAGESTUFF)" in *f2c*) $(MAKE) f2c;; esac
+#\f
# Install hooks:
# f771 is installed elsewhere as part of $(COMPILERS).
rm -rf include/f2c.h ; \
rm -rf $(libdir)/libf2c.a ; \
fi
+#\f
# Clean hooks:
# A lot of the ancillary files are deleted by the main makefile.
# We just have to delete files specific to us.
f77.mostlyclean:
-rm -f f/*$(objext)
-rm -f f/fini f/f771 f/stamp-str f/str-*.h f/str-*.j f/intdoc f/ansify f/intdoc.h0
- -case $(srcdir) in \
- /*) cd f/runtime; $(MAKE) -f $(srcdir)/f/runtime/Makefile.in mostlyclean;; \
- *) cd f/runtime; $(MAKE) -f ../../$(srcdir)/f/runtime/Makefile.in mostlyclean;; \
- esac
+ -cd $(srcdir)/f/runtime; $(MAKE) -f Makefile.in mostlyclean
f77.clean:
- -case $(srcdir) in \
- /*) cd f/runtime; $(MAKE) -f $(srcdir)/f/runtime/Makefile.in clean;; \
- *) cd f/runtime; $(MAKE) -f ../../$(srcdir)/f/runtime/Makefile.in clean;; \
+ -cd $(srcdir)/f/runtime; $(MAKE) -f Makefile.in clean;; \
esac
f77.distclean:
- -case $(srcdir) in \
- /*) cd f/runtime; $(MAKE) -f $(srcdir)/f/runtime/Makefile.in distclean;; \
- *) cd f/runtime; $(MAKE) -f ../../$(srcdir)/f/runtime/Makefile.in distclean;; \
+ -cd $(srcdir)/f/runtime; $(MAKE) -f Makefile.in distclean;; \
esac
-rm -f f/Makefile
# like gcc's extraclean, which does clean f/ for us, but not f/gbe,
-rm -f f/*/*/*lose f/*/*/*.s f/*/*/*.s[0-9] f/*/*/*.i
# realclean is the pre-2.7.0 name for maintainer-clean
f77.maintainer-clean f77.realclean: f77.distclean
- -case $(srcdir) in \
- /*) cd f/runtime; $(MAKE) -f $(srcdir)/f/runtime/Makefile.in maintainer-clean;; \
- *) cd f/runtime; $(MAKE) -f ../../$(srcdir)/f/runtime/Makefile.in maintainer-clean;; \
+ -cd $(srcdir)/f/runtime; $(MAKE) -f Makefile.in maintainer-clean;; \
esac
-rm -f f/g77.info* f/g77.*aux f/TAGS f/BUGS f/INSTALL f/NEWS f/intdoc.texi
+#\f
# Stage hooks:
# The main makefile has already created stage?/f.
-mv $(LIBF77STAGESTUFF) stage4/f/runtime/libF77
-mv $(LIBI77STAGESTUFF) stage4/f/runtime/libI77
-mv $(LIBU77STAGESTUFF) stage4/f/runtime/libU77
+#\f
# Maintenance hooks:
# This target creates the files that can be rebuilt, but go in the
####host overrides
####cross overrides
####build overrides
+#\f
# Now figure out from those variables how to compile and link.
all.indirect: f/Makefile f771
.c.o:
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< -o $@
+#\f
# Lists of files for various purposes.
# Language-specific object files for g77
Makefile: $(srcdir)/f/Makefile.in $(srcdir)/configure
native: f771
+#\f
# Compiling object files from source files.
# Note that dependencies on obstack.h are not written
-e 's: \([.]/\)*f/str[.]h: f/stamp-str:g' \
-e 's%^\(.*\)[ ]*: %f/\1: %g'
+#\f
# These exist for maintenance purposes.
# Update the tags table.
@c The text of this file appears in the file BUGS
@c in the G77 distribution, as well as in the G77 manual.
-@c 1996-08-19
+@c 1996-09-09
@ifclear BUGSONLY
@node Actual Bugs
@ref{Problems Installing}.
@itemize @bullet
-@cindex DNRM2 miscompiled
-@item
-An old version of the BLAS function @code{DNRM2} is miscompiled
-on ix86 machines when @samp{-O2} (or higher, probably) is
-used.
-The bug is in the @code{gcc} back end, as proven using
-a C translation of a simplified version of @code{DRNM2}
-that illustrates the bug.
-(The code in @file{gcc/reg-stack.c} fails to recognize that,
-after an initial load of @samp{XMAX}, a subsequent load
-must be preceded by a stack pop, or @samp{fstp %st(0)} in
-assembler, to avoid ultimately overflowing the floating-point
-stack.)
-
@cindex Alpha
+@cindex -O2
@item
@code{g77}'s version of @code{gcc}, and probably @code{g77}
itself, cannot be reliably used with the @samp{-O2} option
Until this bug is fixed, use only @samp{-O1} or no optimization.
+@cindex DNRM2
+@cindex stack, 387 coprocessor
+@cindex ix86
+@cindex -O2
+@item
+A code-generation bug afflicts
+Intel x86 targets when @samp{-O2} is specified
+compiling, for example, an old version of
+the @samp{DNRM2} routine.
+The x87 coprocessor stack is being somewhat
+mismanaged in cases where assigned @code{GOTO}
+and @code{ASSIGN} are involved.
+
+Version 0.5.21 of @code{g77} contains an initial
+effort to fix the problem, but this effort is
+incomplete, and a more complete fix is planned
+for the next release.
+
@cindex SIGNAL() intrinsic
@cindex intrinsics, SIGNAL()
@item
{
register unsigned olddecl_uid = DECL_UID (olddecl);
- bcopy ((char *) newdecl + sizeof (struct tree_common),
- (char *) olddecl + sizeof (struct tree_common),
- sizeof (struct tree_decl) - sizeof (struct tree_common));
+ memcpy ((char *) olddecl + sizeof (struct tree_common),
+ (char *) newdecl + sizeof (struct tree_common),
+ sizeof (struct tree_decl) - sizeof (struct tree_common));
DECL_UID (olddecl) = olddecl_uid;
}
else
{
dir = (char *) xmalloc (p - filename + 1);
- bcopy (filename, dir, p - filename);
+ memcpy (dir, filename, p - filename);
dir[p - filename] = '\0';
from = p + 1;
map = read_name_map (dir);
early #line directives (when -g is in effect). */
fp = &instack[++indepth];
- bzero ((char *) fp, sizeof (FILE_BUF));
+ memset ((char *) fp, 0, sizeof (FILE_BUF));
if (name == NULL)
name = "";
fp->nominal_fname = fp->fname = name;
instack[indepth].column = ffewhere_column_use (c);
fp = &instack[indepth + 1];
- bzero ((char *) fp, sizeof (FILE_BUF));
+ memset ((char *) fp, 0, sizeof (FILE_BUF));
fp->nominal_fname = fp->fname = fname;
fp->dir = searchptr;
@sp 2
@center James Craig Burley
@sp 3
-@center Last updated 1997-08-24
+@center Last updated 1997-09-09
@sp 1
@c The version number appears some more times in this file.
such changes to @code{g77}.
To find out about existing bugs and ongoing plans for GNU
-Fortran, retrieve @url{ftp://alpha.gnu.ai.mit.edu/g77.plan}
+Fortran, retrieve @uref{ftp://alpha.gnu.ai.mit.edu/g77.plan}
or, if you cannot do that, email
@email{fortran@@gnu.ai.mit.edu} asking for a recent copy of the
GNU Fortran @file{.plan} file.
GNU Fortran supports a variety of extensions to, and dialects
of, the Fortran language.
Its primary base is the ANSI FORTRAN 77 standard, currently available on
-the network at @url{http://kumo.swcp.com/fortran/F77_std/f77_std.html}
-or in @url{ftp://ftp.ast.cam.ac.uk/pub/michael/}.
+the network at @uref{http://kumo.swcp.com/fortran/F77_std/f77_std.html}
+or in @uref{ftp://ftp.ast.cam.ac.uk/pub/michael/}.
It offers some extensions that are popular among users
of UNIX @code{f77} and @code{f2c} compilers, some that
are popular among users of other compilers (such as Digital
@cindex textbooks
(If you need a text on Fortran,
a few freely available electronic references have pointers from
-@url{http://www.fortran.com/fortran/Books/}.)
+@uref{http://www.fortran.com/fortran/Books/}.)
Part of what defines a particular implementation of a Fortran
system, such as @code{g77}, is the particular characteristics
@cindex cfortran.h
@cindex Netlib
Even if you don't actually use it as a compiler, @samp{f2c} from
-@url{ftp://ftp.netlib.org/f2c/src}, can be a useful tool when you're
+@uref{ftp://ftp.netlib.org/f2c/src}, can be a useful tool when you're
interfacing (linking) Fortran and C@.
@xref{f2c Skeletons and Prototypes,,Generating Skeletons and Prototypes with @code{f2c}}.
@code{f2c} program on your path.
Something else that might be useful is @samp{cfortran.h} from
-@url{ftp://zebra/desy.de/cfortran}.
+@uref{ftp://zebra/desy.de/cfortran}.
This is a fairly general tool which
can be used to generate interfaces for calling in both directions
between Fortran and C@.
@samp{-P} option to generate C prototypes appropriate for calling the
Fortran.@footnote{The files generated like this can also be used for
inter-unit consistency checking of dummy and actual arguments, although
-the @samp{ftnchek} tool from @url{ftp://ftp.netlib.org/fortran}
-or @url{ftp://ftp.dsm.fordham.edu} is
+the @samp{ftnchek} tool from @uref{ftp://ftp.netlib.org/fortran}
+or @uref{ftp://ftp.dsm.fordham.edu} is
probably better for this purpose.}
If the Fortran code containing any
routines to be called from C is in file @file{joe.f}, use the command
To find out about major bugs discovered in the current release and
possible workarounds for them, retrieve
-@url{ftp://alpha.gnu.ai.mit.edu/g77.plan}.
+@uref{ftp://alpha.gnu.ai.mit.edu/g77.plan}.
(Note that some of this portion of the manual is lifted
directly from the @code{gcc} manual, with minor modifications
of this manual.
However, users of Linux-based systems (such as GNU/Linux)
-should review @url{http://www.bitwizard.nl/sig11}, a source
+should review @uref{http://www.bitwizard.nl/sig11}, a source
of detailed information on diagnosing hardware problems,
by recognizing their common symptoms.
@pindex ftncheck
Validate your code with @code{ftnchek} or a similar code-checking
tool.
-@code{ftncheck} can be found at @url{ftp://ftp.netlib.org/fortran}
-or @url{ftp://ftp.dsm.fordham.edu}.
+@code{ftncheck} can be found at @uref{ftp://ftp.netlib.org/fortran}
+or @uref{ftp://ftp.dsm.fordham.edu}.
@item
Try your code out using other Fortran compilers, such as @code{f2c}.
/* global.c -- Implementation File (module.c template V1.0)
- Copyright (C) 1995 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1997 Free Software Foundation, Inc.
Contributed by James Craig Burley (burley@gnu.ai.mit.edu).
This file is part of GNU Fortran.
@c The text of this file appears in the file INSTALL
@c in the G77 distribution, as well as in the G77 manual.
-@c 1997-08-17
+@c 1997-09-09
@ifclear INSTALLONLY
@node Installation
a complete GNU UNIX system can be put together on
most systems, if desired.
+=======
The version of GNU @code{gzip} used to package this release
is 1.24.
(The version of GNU @code{tar} used to package this release
is 1.11.2.)
-@item @file{gcc-2.7.2.2.tar.gz}
+@item @file{gcc-2.7.2.3.tar.gz}
You need to have this, or some other applicable, version
of @code{gcc} on your system.
The version should be an exact copy of a distribution
from the FSF.
Its size is approximately 7.1MB.
-If you've already unpacked @file{gcc-2.7.2.2.tar.gz} into a
-directory (named @file{gcc-2.7.2.2}) called the @dfn{source tree}
+If you've already unpacked @file{gcc-2.7.2.3.tar.gz} into a
+directory (named @file{gcc-2.7.2.3}) called the @dfn{source tree}
for @code{gcc}, you can delete the distribution
itself, but you'll need to remember to skip any instructions to unpack
this distribution.
install (primarily, which languages you install).
The sizes shown below assume all languages distributed
-in @code{gcc-2.7.2.2}, plus @code{g77}, will be built
+in @code{gcc-2.7.2.3}, plus @code{g77}, will be built
and installed.
These sizes are indicative of GNU/Linux systems on
Intel x86 running COFF and on Digital Alpha (AXP) systems
used by the author of @code{g77} on his own system:
@example
-/usr/FSF/gcc-2.7.2.2.tar.gz
+/usr/FSF/gcc-2.7.2.3.tar.gz
/usr/FSF/g77-0.5.21.tar.gz
@end example
@example
sh[ 1]# @kbd{cd /usr/src}
@set source-dir 1
-sh[ 2]# @kbd{gunzip -c < /usr/FSF/gcc-2.7.2.2.tar.gz | tar xf -}
+sh[ 2]# @kbd{gunzip -c < /usr/FSF/gcc-2.7.2.3.tar.gz | tar xf -}
[Might say "Broken pipe"...that is normal on some systems.]
@set unpack-gcc 2
sh[ 3]# @kbd{gunzip -c < /usr/FSF/g77-0.5.21.tar.gz | tar xf -}
["Broken pipe" again possible.]
@set unpack-g77 3
-sh[ 4]# @kbd{ln -s gcc-2.7.2.2 gcc}
+sh[ 4]# @kbd{ln -s gcc-2.7.2.3 gcc}
@set link-gcc 4
sh[ 5]# @kbd{ln -s g77-0.5.21 g77}
@set link-g77 5
sh[ 6]# @kbd{mv -i g77/* gcc}
[No questions should be asked by mv here; or, you made a mistake.]
@set merge-g77 6
-sh[ 7]# @kbd{patch -p1 -V t -d gcc < gcc/f/gbe/2.7.2.2.diff}
+sh[ 7]# @kbd{patch -p1 -V t -d gcc < gcc/f/gbe/2.7.2.3.diff}
[Unless patch complains about rejected patches, this step worked.]
@set apply-patch 7
sh[ 8]# @kbd{cd gcc}
to achieve the same result---a source tree containing version
0.5.21 of @code{g77}.
-@item Step @value{link-gcc}: @kbd{ln -s gcc-2.7.2.2 gcc}
+@item Step @value{link-gcc}: @kbd{ln -s gcc-2.7.2.3 gcc}
@item Step @value{link-g77}: @kbd{ln -s g77-0.5.21 g77}
These commands mainly help reduce typing,
and help reduce visual clutter in examples
@example
sh# @kbd{cd /usr/src}
-sh# @kbd{gunzip -c /usr/FSF/gcc-2.7.2.2.tar.gz | tar xf -}
+sh# @kbd{gunzip -c /usr/FSF/gcc-2.7.2.3.tar.gz | tar xf -}
sh# @kbd{gunzip -c /usr/FSF/g77-0.5.21.tar.gz | tar xf -}
-sh# @kbd{ln -s gcc-2.7.2.2 gcc}
+sh# @kbd{ln -s gcc-2.7.2.3 gcc}
sh# @kbd{ln -s g77-0.5.21 g77}
sh# @kbd{mv -i g77/* gcc}
@end example
All three entries should be moved (or copied) into a @code{gcc}
source tree (typically named after its version number and
-as it appears in the FSF distributions---e.g. @file{gcc-2.7.2.2}).
+as it appears in the FSF distributions---e.g. @file{gcc-2.7.2.3}).
@file{g77/f} is the subdirectory containing all of the
code, documentation, and other information that is specific
g77 version 0.5.21
./xgcc -B./ -v -fnull-version -o /tmp/gfa18047 @dots{}
Reading specs from ./specs
-gcc version 2.7.2.2.f.3
+gcc version 2.7.2.3.f.1
./cpp -lang-c -v -isystem ./include -undef @dots{}
-GNU CPP version 2.7.2.2.f.3 (Linux/Alpha)
+GNU CPP version 2.7.2.3.f.1 (Linux/Alpha)
#include "..." search starts here:
#include <...> search starts here:
./include
/usr/local/include
/usr/alpha-unknown-linux/include
- /usr/lib/gcc-lib/alpha-unknown-linux/2.7.2.2.f.3/include
+ /usr/lib/gcc-lib/alpha-unknown-linux/2.7.2.3.f.1/include
/usr/include
End of search list.
./f771 /tmp/cca18048.i -fset-g77-defaults -quiet -dumpbase @dots{}
-GNU F77 version 2.7.2.2.f.3 (Linux/Alpha) compiled @dots{}
+GNU F77 version 2.7.2.3.f.1 (Linux/Alpha) compiled @dots{}
GNU Fortran Front End version 0.5.21 compiled: @dots{}
as -nocpp -o /tmp/cca180481.o /tmp/cca18048.s
ld -G 8 -O1 -o /tmp/gfa18047 /usr/lib/crt0.o -L. @dots{}
__G77_LIBF77_VERSION__: 0.5.21
@@(#)LIBF77 VERSION 19970404
__G77_LIBI77_VERSION__: 0.5.21
-@@(#) LIBI77 VERSION pjw,dmg-mods 19970527
+@@(#) LIBI77 VERSION pjw,dmg-mods 19970816
__G77_LIBU77_VERSION__: 0.5.21
@@(#) LIBU77 VERSION 19970609
sh# @kbd{./xgcc -B./ -v -o /tmp/delete-me -xc /dev/null -xnone}
Reading specs from ./specs
-gcc version 2.7.2.2.f.3
+gcc version 2.7.2.3.f.1
./cpp -lang-c -v -isystem ./include -undef @dots{}
-GNU CPP version 2.7.2.2.f.3 (Linux/Alpha)
+GNU CPP version 2.7.2.3.f.1 (Linux/Alpha)
#include "..." search starts here:
#include <...> search starts here:
./include
/usr/local/include
/usr/alpha-unknown-linux/include
- /usr/lib/gcc-lib/alpha-unknown-linux/2.7.2.2.f.3/include
+ /usr/lib/gcc-lib/alpha-unknown-linux/2.7.2.3.f.1/include
/usr/include
End of search list.
./cc1 /tmp/cca18063.i -quiet -dumpbase null.c -version @dots{}
-GNU C version 2.7.2.2.f.3 (Linux/Alpha) compiled @dots{}
+GNU C version 2.7.2.3.f.1 (Linux/Alpha) compiled @dots{}
as -nocpp -o /tmp/cca180631.o /tmp/cca18063.s
ld -G 8 -O1 -o /tmp/delete-me /usr/lib/crt0.o -L. @dots{}
/usr/lib/crt0.o: In function `__start':
summaries[cc_summaries[i].imp] = cc_summaries[i].text;
}
+ printf ("@c This file is automatically derived from intdoc.c, intdoc.in,\n");
+ printf ("@c ansify.c, intrin.def, and intrin.h. Edit those files instead.\n");
printf ("@menu\n");
for (i = 0; ((size_t) i) < ARRAY_SIZE (names); ++i)
{
+@c This file is automatically derived from intdoc.c, intdoc.in,
+@c ansify.c, intrin.def, and intrin.h. Edit those files instead.
@menu
@ifset familyF2U
* Abort Intrinsic:: Abort the program.
/* intrin.h -- Public interface for intrin.c
- Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+ Copyright (C) 1995-1997 Free Software Foundation, Inc.
Contributed by James Craig Burley (burley@gnu.ai.mit.edu).
This file is part of GNU Fortran.
@c The text of this file appears in the file BUGS
@c in the G77 distribution, as well as in the G77 manual.
-@c 1997-08-25
+@c 1997-09-09
@ifclear NEWSONLY
@node News
of arguments exist.
This avoids a compiler crash.
+@item
+Fix parsing bug whereby @code{g77} rejected a
+second initialization specification immediately
+following the first's closing @samp{/} without
+an intervening comma in a @code{DATA} statement,
+and the second specification was an implied-DO list.
+
@item
Improve performance of the @code{gcc} back end so
certain complicated expressions involving @code{COMPLEX}
@item
Integrate GNU Ada's (GNAT's) changes to the back end,
which consist almost entirely of bug fixes.
+These fixes are circa version 3.10p of GNAT.
@item
Include some other @code{gcc} fixes that seem useful in
@code{g77}'s version of @code{gcc}.
(See @file{gcc/ChangeLog} for details---compare it
-to that file in the vanilla @code{gcc-2.7.2.2.tar.gz}
+to that file in the vanilla @code{gcc-2.7.2.3.tar.gz}
distribution.)
@item
crash, or generation of incorrect code.
@item
-Improve alias analysis code to properly handle
-output registers (such as the @samp{%o} registers
-on the SPARC).
+Make some fixes to alias analysis code.
@item
Add support for @code{restrict} keyword in @code{gcc}
front end.
+@item
+Support @code{gcc} version 2.7.2.3
+(modified by @code{g77} into version 2.7.2.3.f.1),
+and remove
+support for prior versions of @code{gcc}.
+
+@item
+Incorporate GNAT's patches to the @code{gcc} back
+end into @code{g77}'s, so GNAT users do not need
+to apply GNAT's patches to build both GNAT and @code{g77}
+from the same source tree.
+
@item
Modify @code{make} rules and related code so that
generation of Info documentation doesn't require
Fix @code{libf2c} build procedure to re-archive library
if previous attempt to archive was interrupted.
-@item
-Fix @code{gcc} to more easily support configuring on
-Pentium Pro (686) systems.
-
@item
Change @code{gcc} to unroll loops only during the last
invocation (of as many as two invocations) of loop
/* Include files everyone gets. */
+#include "config.j" /* Must come before any other #includes in gcc. */
#include "assert.j" /* Use gcc's assert.h. */
#include <stdio.h>
#include <stddef.h>
+Tue Sep 9 00:33:24 1997 Craig Burley <burley@gnu.ai.mit.edu>
+
+ * Version 0.5.21 released.
+
+Mon Sep 8 19:39:01 1997 Craig Burley <burley@gnu.ai.mit.edu>
+
+ * libI77/close.c (f_exit): Fix thinko, inverted test
+ of whether initialization done, so exiting now closes
+ open units again.
+
Tue Aug 26 01:42:21 1997 Craig Burley <burley@gnu.ai.mit.edu>
From Jim Wilson:
$(lib): stamp-lib ; @true
stamp-lib: stamp-libf77 stamp-libi77 stamp-libu77
rm -f stamp-lib
- $(AR) $(AR_FLAGS) $(lib) $(FOBJ) $(IOBJ) $(UOBJ)
+ $(AR) $(AR_FLAGS) $(lib) $?
rm -fr libE77
mkdir libE77
for name in $(F2CEXT); \
/*
*/
-char __G77_LIBI77_VERSION__[] = "0.5.21-19970811";
+char __G77_LIBI77_VERSION__[] = "0.5.21";
/*
2.01 $ format added
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
-#include <errno.h>
+#include <errno.h> /* for ENOSYS */
#include "f2c.h"
integer G77_hostnm_0 (char *name, ftnlen Lname)