OSDN Git Service

* ggc-page.c (ggc_collect): Avoid overflow computing
[pf3gnuchains/gcc-fork.git] / libf2c / README
index 9419af7..008654b 100644 (file)
@@ -1,36 +1,41 @@
-970811
+1998-08-11
 
-This directory contains the f2c library packaged for use with g77 to configure
-and build automatically (in principle!) as part of the top-level configure and
-make steps.  This depends on the makefile and configure fragments in ../f.
+This directory contains the libf2c library packaged for use with g77
+to configure and build automatically (in principle!) as part of the
+top-level configure and make steps.  g77 names this library `libg2c'
+to avoid conflicts with existing copies of `libf2c' on a system.
 
-Some small changes have been made to the f2c distributions of lib[FI]77 which
-come from <ftp:bell-labs.com/netlib/f2c/> and are maintained (excellently) by
-David M. Gay <dmg@bell-labs.com>.  See the Notice files for copyright
-information.  I'll try to get the changes rolled into the f2c distribution.
+Some small changes have been made vis-a-vis the netlib distribution of
+libf2c, which comes from <ftp:bell-labs.com/netlib/f2c/> and is maintained
+(excellently) by David M. Gay <dmg@bell-labs.com>.  See the Notice files
+for copyright information.  We usually try to get g77-specific changes
+rolled back into the libf2c distribution.
 
 Files that come directly from netlib are either maintained in the
-gcc/f/runtime/ directory under their original names or, if they
-are not pertinent for g77's version of libf2c, under their original
-names with `.netlib' appended.  For example, gcc/f/runtime/permissions.netlib
-is a copy of f2c's top-level`permissions' file in the netlib distribution.
-In this case, it applies only to the relevant portions of the libF77/ and
-libI77/ directories; it does not apply to the libU77/ directory, which is
-distributed under different licensing arrangements.  Similarly,
-the `makefile.netlib' files in libF77/ and libI77/ are copies of
-the respective `makefile' files in the netlib distribution, but
-are not used when building g77's version of libf2c.
-
-The `README.netlib' files in libF77/ and libI77/ thus might be
+libf2c directory under their original names or, if they are not pertinent
+for g77's version of libf2c, under their original names with `.netlib'
+appended.  For example, permissions.netlib is a copy of f2c's top-level
+`permissions' file in the netlib distribution.  In this case, it applies
+only to the relevant portions of the libF77/ and libI77/ directories; it
+does not apply to the libU77/ directory, which is distributed under
+different licensing arrangements.  Similarly, the `makefile.netlib' files
+in the libF77/ and libI77/ subdirectories are copies of the respective
+`makefile' files in the netlib distribution, but are not used when
+building g77's version of libf2c.
+
+The README.netlib files in libF77/ and libI77/ thus might be
 interesting, but should not be taken as guidelines for how to
 configure and build libf2c in g77's distribution.
 
-The packaging for auto-configuration was done by Dave Love <d.love@dl.ac.uk>.
-Minor changes have been made by James Craig Burley <burley@gnu.ai.mit.edu>,
-who probably broke things Dave had working.  :-)
+* Read permissions.netlib for licensing conditions that apply to
+  distributing programs containing portions of code in the libF77/ and
+  libI77/ subdirectories.  Also read disclaimer.netlib.
+
+* Read libU77/COPYING.LIB for licensing conditions that apply to
+  distributing programs containing portions of code in the libU77/
+  subdirectory.
 
-Among the user-visible changes (choices) g77 makes in its
-version of libf2c:
+Among the user-visible changes (choices) g77 makes in its version of libf2c:
 
 -  f2c.h configured to default to padding unformatted direct reads
    (#define Pad_UDread), because that's the behavior most users
@@ -44,3 +49,61 @@ version of libf2c:
 
 -  dtime_() and etime_() are from Dave Love's libU77, not from
    netlib's libF77.
+
+-  Routines that are intended to be called directly via user code
+   (as in `CALL EXIT', but not the support routines for `OPEN')
+   have been renamed from `<name>' to `G77_<name>_0'.  This, in
+   combination with g77 recognizing these names as intrinsics and
+   calling them directly by those names, reduces the likelihood of
+   interface mismatches occurring due to use of compiler options
+   that change code generation, and permits use of these names as
+   both intrinsics and user-supplied routines in applications (as
+   required by the Fortran standards).  f2cext.c contains "jacket"
+   routines named `<name>' that call `G77_<name>_0', to support
+   code that relies on calling the relevant routines as `EXTERNAL'
+   routines.
+
+   Note that the `_0' in the name denotes version 0 of the *interface*,
+   not the *implementation*, of a routine.  The interface of a
+   given routine *must not change* -- instead, introduce a new copy
+   of the code, with an increment (e.g. `_1') suffix, having the
+   new interface.  Whether the previous interface is maintained is
+   not as important as ensuring the routine implementing the new
+   interface is never successfully linked to a call in existing,
+   e.g. previously compiled, code that expects the old interface.
+
+-  Version.c in the subdirectories contains g77-specific version
+   information and a routine (per subdirectory) to print both the
+   netlib and g77 version information when called.  The `g77 -v'
+   command is designed to trigger this, by compiling, linking, and
+   running a small program that calls the routines in sequence.
+
+-  libF77/main.c no longer contains the actual code to copy the
+   argc and argv values into globals or to set up the signal-handling
+   environment.  These have been removed to libF77/setarg.c and
+   libF77/setsig.c, respectively.  libF77/main.c contains procedure
+   calls to the new code in place of the code itself.  This should
+   simplify linking executables with a main() function other than
+   that in libF77/main.c (such as one written by the user in C or
+   C++).  See the g77 documentation for more information.
+
+-  Complex-arithmetic support routines in libF77/ take a different approach
+   to avoiding problems resulting from aliased input and output arguments,
+   which should avoid particularly unusual alias problems that netlib
+   libf2c might suffer from.
+
+-  libF77/signal_.c supports systems with 64-bit pointers and 32-bit
+   integers.
+
+-  I/O routines in libI77/ have code to detect attempts to do recursive
+   I/O more "directly", mainly to lead to a clearer diagnostic than
+   typically occurs under such conditions.
+
+-  Formatted-I/O routines in libI77/ have code to pretty-print a FORMAT
+   string when printing a fatal diagnostic involving formatted I/O.
+
+-  libI77/open.c supports a more robust, perhaps more secure, method
+   of naming temporary files on some systems.
+
+-  Some g77-specific handling of building under Microsoft operating
+   systems exists, mainly in libI77/.