We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Dear All,
I encounter a very strange problem.
After I assign a absolute address function at bank0,
bank0(?PR?foo?test(C800h))
Other bank's allocation becomes very strange like the following.
BANK1 01D2H 046AH UNIT ?PR?FUNC?A_MODULE
* OVERLAP * BANK1 01D2H 0060H UNIT ?CO?B_MODULE
B_MODULE's code segment is mis-placed at the same address where some functions already occupied.
Other modules' situation are very similar. They always have some code segments overlapped with some functions.
If I put the absolute address function in common bank, there will not be any L5 warnings.
Is there any additional setting that I should add?
B.R. Daniel
Which version of the linker are you using? Do you get other warings/errors?
Linker - I try V4.13 and V6.02, the result is all the same.
Other warnings:
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
*** WARNING L17: INTERRUPT FUNCTION IN BANKS NOT ALLOWED (Because I move ?C51STARTUP to bank 0 to save common area size
*** WARNING L5: CODE SPACE MEMORY OVERLAP FROM: 01CFH TO: 2488H SPACE: BANK1
BANK0 does not have L5 wanring, but all other banks have. One more thinkg, if I don't specify the code segment inserted into its local bank. That bank will not have L5 warning message.
e.g.,
Remove all of the following code segment insertion directive.
BANK1(?CO?AAA, ?CO?BBB) BANK2(?CO?CCC, ?CO?DDD)
The bank1 and bank2 will not have L5 warning message.