Discussion:
co-processor offset out of range issue in Debian armhf.
(too old to reply)
peter green
2017-01-26 15:12:59 UTC
Permalink
Raw Message
mricron is failing to build for Debian armhf, specifically we are getting a bunch of "co-processor offset out of range" errors.
(9009) Assembling parconvert
parconvert.s:3775: Error: co-processor offset out of range
parconvert.s:3783: Error: co-processor offset out of range
parconvert.s:3880: Error: co-processor offset out of range
parconvert.s:3886: Error: co-processor offset out of range
parconvert.s:3892: Error: co-processor offset out of range
parconvert.s:3895: Error: co-processor offset out of range
parconvert.s:3899: Error: co-processor offset out of range
parconvert.s:3903: Error: co-processor offset out of range
parconvert.s:3918: Error: co-processor offset out of range
parconvert.s:3924: Error: co-processor offset out of range
parconvert.s:3930: Error: co-processor offset out of range
parconvert.s:4813: Error: co-processor offset out of range
parconvert.s:4817: Error: co-processor offset out of range
parconvert.s:4821: Error: co-processor offset out of range
parconvert.s:4825: Error: co-processor offset out of range
parconvert.s:4895: Error: co-processor offset out of range
parconvert.s:4899: Error: co-processor offset out of range
parconvert.pas(1375) Error: (9007) Error while assembling exitcode 1
parconvert.pas(1375) Fatal: (10026) There were 2 errors compiling
module, stopping
Fatal: (1018) Compilation aborted
# [593] lScanResX := round(readParFloat);
mov r0,r11
blx PARCONVERT$_$READ_PAR2NII$crcDDE5A164_$$_READPARFLOAT$$DOUBLE
blx fpc_round_real
blx fpc_int64_to_double
vmov.f64 d1,d0
sub r0,r11,#143360
vstr d1,[r0, #-2528]
if lUpCaseStr = 'SCANRESOLUTION(XY)' then begin
lScanResX := round(readParFloat);
lScanResY := round(readParFloat);
More detail at https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=851834

Any thoughts on what might cause this or possible fixes? my guess is that the compiler is missing an offset range check for access to local variables.
Jeppe Johansen
2017-01-26 17:17:43 UTC
Permalink
Raw Message
Post by peter green
mricron is failing to build for Debian armhf, specifically we are
getting a bunch of "co-processor offset out of range" errors.
(9009) Assembling parconvert
parconvert.s:3775: Error: co-processor offset out of range
parconvert.s:3783: Error: co-processor offset out of range
parconvert.s:3880: Error: co-processor offset out of range
parconvert.s:3886: Error: co-processor offset out of range
parconvert.s:3892: Error: co-processor offset out of range
parconvert.s:3895: Error: co-processor offset out of range
parconvert.s:3899: Error: co-processor offset out of range
parconvert.s:3903: Error: co-processor offset out of range
parconvert.s:3918: Error: co-processor offset out of range
parconvert.s:3924: Error: co-processor offset out of range
parconvert.s:3930: Error: co-processor offset out of range
parconvert.s:4813: Error: co-processor offset out of range
parconvert.s:4817: Error: co-processor offset out of range
parconvert.s:4821: Error: co-processor offset out of range
parconvert.s:4825: Error: co-processor offset out of range
parconvert.s:4895: Error: co-processor offset out of range
parconvert.s:4899: Error: co-processor offset out of range
parconvert.pas(1375) Error: (9007) Error while assembling exitcode 1
parconvert.pas(1375) Fatal: (10026) There were 2 errors compiling
module, stopping
Fatal: (1018) Compilation aborted
# [593] lScanResX := round(readParFloat);
mov r0,r11
blx PARCONVERT$_$READ_PAR2NII$crcDDE5A164_$$_READPARFLOAT$$DOUBLE
blx fpc_round_real
blx fpc_int64_to_double
vmov.f64 d1,d0
sub r0,r11,#143360
vstr d1,[r0, #-2528]
if lUpCaseStr = 'SCANRESOLUTION(XY)' then begin
lScanResX := round(readParFloat);
lScanResY := round(readParFloat);
More detail at https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=851834
Any thoughts on what might cause this or possible fixes? my guess is
that the compiler is missing an offset range check for access to local
variables.
I'm fairly certain this is from spilling code as the only other case has
bounds checks.
The code in question also has a huge number of local variables, so that
supports this case.

Not sure if it can be fixed, except by minimizing the local variables..
It already contained this mention: const kMaxnSLices = 18000;//delphi
32000 - lazarus fails >15000

Best Regards,
Jeppe
Florian Klämpfl
2017-02-04 20:49:19 UTC
Permalink
Raw Message
Post by peter green
Any thoughts on what might cause this or possible fixes? my guess is that the compiler is missing
an offset range check for access to local variables.
I'm fairly certain this is from spilling code as the only other case has bounds checks.
The code in question also has a huge number of local variables, so that supports this case.
Should be fixed by r35396.

_______________________________________________
fpc-devel maillist - fpc-***@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Loading...