#: 17896 S12/OS9/68000 (OSK)
12-Apr-93 02:52:35
Sb: #17892-#C_error_help
Fm: Mark Griffith 76070,41
To: LARRY OLSON 72227,3467 (X)
Larry,
> I was able to bring the following down:
> Init. data off: #72474 #69992
> Data ref. off: #76344 #73858
>
> The program now compiles without the Value Out of Range error !!
> For some reason, the problem is tied into the size of the program.
Sounds like something in the linker. Let me give you an example. I have a
library function that issues a BREAK on the modem port. This is the code:
send_break()
{
if (_ss_sbreak(mp) < 0)
#asm
I$SetStt equ $008E ; 8f is get
_ss_sbreak:
link a5,#0
movem.l D1/D2/A0,-(A7)
move.l D1,D2
move.w #SS_Break,D1
os9 I$SetStt
bra _sysret
}
Notice the bra _sysret call. Sysret is located in the sys.l library. If the
program is very large, over 32K, and the location of the break function is at
the beginning, when I link in sys.l, I will get an error if the location of
_sysret is greater than 32K from where it was called. I am not good enough at
OSK assembler to fix this problem. So for now, I just make sure I put the break
function at the end of the program source file, and then link sys.l first (if I
can).
I belive you might be having the same trouble. Perhaps someone else here can
shed some more light on these problems.
/************* /\/\ark ************/
There are 2 Replies.
|