Annotation of researchv10no/cmd/f77/README, revision 1.1.1.1

1.1       root        1: Feb. 1988: dmg modified f77pass1 to put out stab info to make .o's
                      2: compiled by f77 -g look like corresponding .o's from cc -g , with the
                      3: conventions described by Feldman and Weinberger in the Fortran 77
                      4: section of Volume 2B of the Seventh Edition UNIX PROGRAMMER'S
                      5: MANUAL.  This makes pi useful with f77 -g.
                      6: 
                      7: COMPLEX variables appear to be
                      8:        struct complex { float real, imag; };
                      9: DOUBLE COMPLEX variables similarly appear to be
                     10:        struct dcomplex { double real, imag; };
                     11: 
                     12: Norman's COMMON stab entries are retained (in hopes that some day
                     13: pi -- or some other debugger -- might be made to exploit them);
                     14: see alt/README.  In addition, COMMON blocks are made to appear as
                     15: global structs:
                     16:        COMMON /ABC/ N, X
                     17: looks like
                     18:        extern struct abc_COMMON_ {int n; float x;} abc_;
                     19: 
                     20: If the same COMMON block occurs in 
                     21: 
                     22: CHARACTER variables are uniformly made to appear as char* or char[] ,
                     23: so one can easily see more than the first character with pi.
                     24: 
                     25: Omission: stab entries for the implicit length parameters associated
                     26: with CHARACTER arguments are currently omitted.  (But CHARACTER functions
                     27: have stabs entries for their return value and return value lengths.)
                     28: 
                     29: Regarding what follows, also read Norman's comments in alt/README.
                     30: 
                     31: Thanks to changes in pi by Tom Cargill, COMMON variables appear
                     32: to be local variables in each subprogram in which they are used.
                     33: COMMON blocks also appear in pi's Globals menu.  If several
                     34: subprograms use different names for the components of a COMMON
                     35: block, then f77 merges these into the global struct that describes
                     36: the COMMON block, honoring only the first occurrence of each name.
                     37: 
                     38: EQUIVALENCEs involving COMMON blocks are handled as above: the
                     39: global struct for the COMMON block gets more components, and all
                     40: components appear as local variables.  EQUIVALENCEd local variables
                     41: also simply appeared in pi's local variable menu.  This required
                     42: more tinkering by tac and emission by f77 of a stab sequence of
                     43: the form
                     44: 
                     45:        .stabn  0xe2,0,0                #0xe2 = BCOMM
                     46:        .stabn  symtype,0,address       #symtype = STSYM (0x26) or LCSYM (0x28)
                     47:        .stabs  "vname1",0,type,offset
                     48:        # type modifiers (SSYM, DIM), if required
                     49:        .stabs  "vname2",0,type,offset
                     50:        # type modifiers (SSYM, DIM), if required
                     51:        ....
                     52:        .stabn  0xe8,0,0,0              #0xe8 = ECOML
                     53: 
                     54: This departs from Norman's scheme by moving the address from the
                     55: ECOML line (where we can't get it right without tinkering /bin/as
                     56: and /bin/ld) to a separate STSYM or LCSYM line right after the BCOMM
                     57: (in which we get the right address).  This differs from COMMON in
                     58: that the name field of the BCOMM is null.  (It would be nicer if
                     59: COMMON and EQUIVALENCE could be handled uniformly, but the addressing
                     60: restrictions of /bin/as and /bin/ld prevent this.)
                     61: 
                     62: 
                     63: Bug fixes made 30 June 1989 to /n/bowell/usr/src/cmd/f77:
                     64: 1. Type of PARAMETERs honored.
                     65: 2. Comma allowed in DO: do 10, i = 1, n
                     66: 3. Stmt function actual arg can be subscripted var of same name as the dummy.
                     67: 4. Calling sequence expected by functions and subroutines adjusted to
                     68:    match the calling sequence passed to same.  Previously, procedures
                     69:    expected a length parameter to accompany procedure arguments.  This
                     70:    change eliminates the old "bad code may have been generated" warning.
                     71: 5. DATA statements with general implied DOs now work.  Previously only
                     72:    an initial, singly nested DO worked.
                     73: 6. A loop like "DO 10 i = 1, 1, -1" no longer has its range omitted.
                     74: 7. ASSIGNed FORMAT labels work.
                     75: 8. New flags -b and -B added: -b warns when the above bug fixes affect
                     76:    generated objects; -B reverts to the previous buggy behavior.
                     77: 9. Default max number of statement labels increased (from 201 to 801).
                     78: 10. Disallow statement functions among executables, even when there
                     79:     are DATA statements.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.