Google
 

Trailing-Edge - PDP-10 Archives - bb-d868b-bm_tops20_v3a_2020_dist - 3a-documentation/pat.tco
There are 15 other files named pat.tco in the archive. Click here to see a list.
TOPS20 Change Order Number 3A.1908

Written by: GILBERT		28-Aug-78 22:09:17

Edit checked: YES			   Document: NO
  TCO Tested: YES		Maintenance Release: YES

Program: PAT

Related TCO's:
Related SPR's: 


Problem: 
If a user program does a CORE UUO to get rid of its high segment, then
does another CORE UUO to change the size of its low segment, where the
new low segment size is greater than 400000, then the second CORE UUO
will fail.  This can also happen if the two functions are combined into
a single CORE UUO.

This symptom can cause a LNKRME error out of LINK version 4 or later
when loading a fairly large program that has a high segment.

Diagnosis: 
The code that deletes a high segment only clears the left half of .JBHRL.
Most places in PAT check for high segment existence by checking the right
half of .JBHRL for zero, but one check in the CORE UUO code checks for
high segment existence by testing all of .JBHRL.

This causes PAT to think that the user program has a high segment when
it actually doesn't, so PAT disallows all CORE UUOs to the low segment
with an argument greater than 400000 because it thinks that the user is
trying to make his low and high segments overlap.

Solution: 
Make the CORE UUO code check only the right half of .JBHRL.  This was
fixed in a different way in version 4 of PAT as part of a large bug
fixing effort for high segment origins at other than 400000.

The code fix is as follows:

at CORU10+2, replace:

	SKIPE .JBHRL		;IS THERE A HIGH SEG?

with:

	UMOVE C,.JBHRL		;GET HIGH SEG FF AND END INFO
	TRNE C,-1		;IS THERE A HIGH SEG?