Google
 

Trailing-Edge - PDP-10 Archives - bb-d868e-bm_tops20_v41_2020_dist_1of2 - 4-1-documentation/link.bwr
There are 17 other files named link.bwr in the archive. Click here to see a list.


         LINK.BWR: LINK Version 5.1(2030) 1 Feb 83




Copyright (C) 1983 Digital Equipment  Corporation,  Maynard,
MA.





This software is furnished under a license and may  be  used
and copied only in accordance with the terms of such license
and with the inclusion of the above copyright notice.   This
software  or any other copies thereof may not be provided or
otherwise made available to any other person.  No  title  to
and ownership of the software is hereby transferred.



The information  in  this  software  is  subject  to  change
without  notice  and should not be construed as a commitment
by Digital Equipment Corporation.



Digital assumes no responsibility for the use or reliability
of  its  software  on  equipment  which  is  not supplied by
Digital.
                                                      Page 2


1.0  KNOWN LINK PROBLEMS


The following known  problems  may  be  fixed  in  a  future
release  of  LINK.  Where possible we have suggested a patch
or workaround for the problem.

     1.  It is possible to cause infinite looping or illegal
         memory  references  if  segments or PSECTs overlap.
         This   happens   because   reference   chains   for
         unresolved symbols may be corrupted by the overlap.
         Use the /LIMIT switch to set the  maximum  size  of
         segments  and  PSECTs  to  get memory maps, logs or
         other  diagnostic  information  if  you  find  that
         changing  a  program's  size  or position in memory
         causes LINK to loop when loading the program.

     2.  When loading  a  FORTRAN  program  LINK  will  open
         SYS:OVRLAY.REL  whether  or  not  /OVERLAY has been
         specified.   The  following   patch   solves   this
         problem, and its installation is recommended.
                                                      Page 3



[Symptom]

When loading FORTRAN programs LINK opens SYS:OVRLAY.REL even if the
program being loaded doesn't use overlays.

[Diagnosis]

In order to be certain that values in COMMON are preserved, even for
overlaid programs, the FORTRAN compiler always includes a Type 1045
block in the FORTRAN object code.  LINK interprets this block as a
request for writable overlays and sets the "writable overlay" flag in
the global OVERLW.

[Cure]

LINK should not set the bit in OVERLW when a type 1045 block is seen
unless OVERLW is already nonzero ( i.e., that /OVERLAY has been seen. )

[FILCOM]

File 1)   L5D:LNKHST.MAC[4,377] created: 1818 20-Jan-1983
File 2)   DSK:LNKHST.MAC[4,77]  created: 1424 27-Jan-1983

1)1  SUBTTL    D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN/PY/MFB 6-Jan-83
1)   
****
2)1  SUBTTL    D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN/PY/MFB 27-Jan-83
2)   
**************
1)1  DECEVR==2030  ;DEC EDIT VERSION
1)   
****
2)1  DECEVR==2031  ;DEC EDIT VERSION
2)   
**************
1)5  
****
2)5  ;2031     PY 27-Jan-83
2)   ;    Don't set the writable overlay bit when processing type 1045
2)   ;    blocks (FORTRAN SAVE statement) unless actually doing an
2)   ;    overlay load. Prevents undesirable searching of OVRLAY.REL
2)   ;    Routine: LNKNEW
2)   
2)   
**************


File 1)   L5D:LNKNEW.MAC[4,377] created: 1739 06-Jan-1983
File 2)   DSK:LNKNEW.MAC[4,77]  created: 1419 27-Jan-1983

1)1  SUBTTL    D.M.NIXON/DMN/JLd/TXR/JNG/DZN/PAH/PY  6-Jan-83
1)   
****
2)1  SUBTTL    D.M.NIXON/DMN/JLd/TXR/JNG/DZN/PAH/PY  27-Jan-83
                                                      Page 4


2)   
**************
1)1  DECEVR==2026  ;DEC EDIT VERSION
1)   
****
2)1  DECEVR==2031  ;DEC EDIT VERSION
2)   
**************
1)2  
1)   
****
2)2  ;2031     Don't set the writable bit in OVERLW unless actually doing overlays.
2)   
**************
1)31      IORM T1,OVERLW  ;[1704] REMEMBER THIS
****
2)31 ;**;[2031] Insert 1 Line after T.1045+4 Lines PY 27-Jan-83
2)        SKIPE OVERLW   ;[2031] DON'T SET UNLESS DOING OVERLAYS
2)        IORM T1,OVERLW  ;[1704] REMEMBER THIS
**************
   ========
                                                      Page 5


 3.  Under certain conditions a .LOG file may be opened  but
     not closed ( thereby losing it ).

 4.  An illegal memory reference  may  occur  when  LINK  is
     writing  a  line  printer  format  overlay  plot.   The
     following patch fixes this problem.
                                                      Page 6


[Symptom]

When spooling an overlay plot to the line printer LINK  gets
an illegal memory reference.


[Diagnosis]

In PLTIO the code uses  DIGITS  to  determine  when  it  has
finished  processing  a  buffer  of  data.   DIGITS  is  not
correctly initialized.


[Cure]

Replace the SETZ DIGITS at DECPLT (or global NUMBER+71) with
SETZM DIGITS in the module PLTIO.MAC.


[FILCOM]

; BASIC:<LINK.V5M>PLTIO.MAC.1 & PLTIO.MAC.4 28-Jan-83 0903

LINE 18, PAGE 1
1)   DECEVR==1220  ;DEC EDIT VERSION
1)   ^L
LINE 18, PAGE 1
2)   DECEVR==1544  ;DEC EDIT VERSION
2)   ^L

LINE 8, PAGE 2
1)   ^L
LINE 8, PAGE 2
2)   ;1544     Change SETZ at DECPLT to a SETZM.
2)   ^L

LINE 55, PAGE 24
1)   DECPLT:   SETZ DIGITS
1)   DECP3:    IDIVI R1,12
LINE 55, PAGE 24
2)   DECPLT:   SETZM DIGITS ;[1544] Zero DIGITS
2)   DECP3:    IDIVI R1,12


   ========
                                                      Page 7


2.0  EXTENDED ADDRESSING PATCHES


     1.  If a program being loaded into  a  nonzero  section
         has  many  symbols,  the  ?LNKMEF  Memory Expansion
         Failure error may occur.  The following two patches
         are  recommended  for users of extended addressing;
         they will be included in a future AUTOPATCH tape.
                                                      Page 8


[Symptom]

Link may die with a ?LNKMEF error when loading  an  extended
addressing program with lots of local symbols.

[Diagnosis]

At LDCR6C, LW.LC is converted to pages, and NONZER is added.
Since  LW.LC  already  contained  the  section  number,  the
section is double the one actually desired.  The  PMAP  will
probably  fail,  or  else  will  bring  in  the  wrong pages
corrupting the core image.  A similar calculation is done at
LDCOR7+41.

[Cure]

Remove the two  lines  at  LDCR6C+26  and  at  LDCOR7+41  in
LNKCOR.


[FILCOM]

File 1)   DSK:LNKCOR.OLD[4,27] created: 1943 06-Jan-1983
File 2)   DSK:LNKCOR.MAC[4,27] created: 1536 11-Jan-1983

1)10      SKIPGE T1  ;[1412] REALLY A JFN?
1)        ADD  T1,NONZER ;[1412] NO, ADD IN SECTION NUMBER
1)        POP  P,T3  ;[1401] PUT COUNT BACK
****
2)10 ;**;[1542] Remove 2 lines at LDCR6C+26.  PAH 11-Dec-82
2)        POP  P,T3  ;[1401] PUT COUNT BACK
**************
1)11      SKIPGE T1  ;[1412] REALLY A JFN?
1)        ADD  T1,NONZER ;[1412] NO, ADD SECTION NUMBER
1)        MOVE T2,(P)  ;[1401] GET COUNT BACK, BUT KEEP IT
****
2)11 ;**;[1542] Remove 2 lines at LDCOR7+41. PAH 11-Dec-82
2)        MOVE T2,(P)  ;[1401] GET COUNT BACK, BUT KEEP IT
**************


   ========
                                                      Page 9


[Symptom]

LINK cannot load large extended addressing programs, that is
ones  with  large  numbers  of  symbols, even if the code at
LDCR6C+26 Lines is fixed.  LINK dies with an  ?LNKMEF  error
when it tries to overflow the LS area to disk.

[Diagnosis]

LS.OUT is called to dump the LS area to disk for  the  first
time.   It  in  turn  calls  OVF.OU  to  do the actual work.
OVF.OU checks EXTFLG, and finding it set, determines that it
should  map  out the window ( since this flag signals that a
nonzero section  is  mapped  ).   Since  the  LS  pages  are
private,  this destroys the entire LS area.  Moreover, LS.IN
is called after LS.OUT to bring back a window.  LS.IN  calls
NEWSCT,  which  sees that EXTFLG is set, and determines that
it should check for the existance of the  section  specified
by  NONZER.   LS.IN  has  carefully zeroed NONZER, so NEWSCT
checks for the existance of section zero.  Not having it  in
the table, it tries to do an SMAP, which fails.

[Cure]

Don't rely only on EXTFLG in LS.OUT or in NEWSCT when  LS.IN
is called.

[Filcom]


File 1)   5M:LNKCOR.MAC[4,275] created: 1148 25-Jan-1983
File 2)   X3:LNKCOR.MAC[4,27]   created: 1714 25-Jan-1983

1)1  DECEVR==1542  ;DEC EDIT VERSION
1)   SEGMENT
****
2)1  DECEVR==1543  ;DEC EDIT VERSION
2)   SEGMENT
**************
1)5  SUBTTL SIMPLE TESTS FIRST
****
2)4  ;1543     Avoid using EXTFLG when calling LS.OUT or NEWSCT.
2)5  SUBTTL SIMPLE TESTS FIRST
**************
1)47 > ;[1536] END IFN FTFRK2
****
2)47 ;**;[1543] Add two lines at %AREA'.OUT+6. PAH 25-Jan-83
2)        PUSH P,EXTFLG ;[1543] SAVE EXTFLG
2)        SETZM EXTFLG  ;[1543] AND ZERO IT
2)   > ;[1536] END IFN FTFRK2
**************
1)47      POP  P,NONZER ;[1536]
****
2)47 ;**;[1543] Add 1 line at %AREA'.OUT+16.  PAH 25-Jan-83 
2)        POP  P,EXTFLG ;[1543] RESTORE EXTFLG
                                                     Page 10


2)        POP  P,NONZER ;[1536]
**************
1)53 > ;[1536] IFN FTFRK2
****
2)53 ;**;[1543] Add 2 lines at %AREA'.IN+7.  PAH 12-Jan-83
2)        PUSH P,EXTFLG ;[1543] ZERO OUT EXTFLG
2)        SETZM EXTFLG  ;[1543] TO AVOID TOUCHING LC SECTIONS
2)   > ;[1536] IFN FTFRK2
**************
1)53      POP  P,NONZER ;[1536]
****
2)53 ;**;[1543] Add 1 line at %AREA'.IN+14. PAH 12-Jan-83
2)        POP  P,EXTFLG ;[1543] PUT BACK LC SECTION FLAG
2)        POP  P,NONZER ;[1536]
**************
                                                     Page 11


[End of LINK.BWR]