As a portable Fortran implementation, g77 offers its users direct access to, and otherwise depends upon, the underlying facilities of the system used to build g77, the system on which g77 itself is used to compile programs, and the system on which the g77-compiled program is actually run. (For most users, the three systems are of the same type—combination of operating environment and hardware—often the same physical system.)
The run-time environment for a particular system inevitably imposes some limits on a program's use of various system facilities. These limits vary from system to system.
Even when such limits might be well beyond the possibility of being encountered on a particular system, the g77 run-time environment has certain built-in limits, usually, but not always, stemming from intrinsics with inherently limited interfaces.
Currently, the g77 run-time environment does not generally offer a less-limiting environment by augmenting the underlying system's own environment.
Therefore, code written in the GNU Fortran language, while syntactically and semantically portable, might nevertheless make non-portable assumptions about the run-time environment—assumptions that prove to be false for some particular environments.
The GNU Fortran language, the g77 compiler and run-time environment, and the g77 documentation do not yet offer comprehensive portable work-arounds for such limits, though programmers should be able to find their own in specific instances.
Not all of the limitations are described in this document. Some of the known limitations include: