Re: [fpc-devel] Status of dynamic packages

2017-01-26 Thread Sven Barth
On 25.01.2017 21:40, Mattias Gaertner wrote:
> On Thu, 10 Nov 2016 17:29:50 +0100
> Sven Barth  wrote:
> 
>> Am 10.11.2016 15:17 schrieb "gabor" :
>>>
>>> Hello.
>>> What's the status of dynamic packages? Are they usable?  
>>
>> Currently only compile time packages work (meaning you can't load
>> additional packages at runtime). Also currently only i386-win32 and the OS
>> X targets (I did only test powerpc-darwin however) would be supported if
>> packages would be enabled.
>> Additionally there still needs to be fpmake support for dynamic packages
>> added (so that the ppk is generated based on the fpmake.pp and that it
>> indeed compiles the package).
> 
> If someone wants to help with it, what skills/knowledge are required and
> what are the next steps?

For the compiler/RTL there isn't much that can be done as I'll need to
redesign the unit initialization and finalization as well as prepare the
RTL for a more dynamic approach regarding various tables.

What could be helped with however would be fpmake since that would need
to be able to generate package files and compile them along with the
units if the target supports dynamic packages (cause I don't want to
maintain a parallel .ppk file). I've already asked Joost on Core whether
he'd be inclined to do that, but I haven't received an answer, so I
don't know whether he read my mail or even already started working on it...

Regards,
Sven

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


Re: [fpc-devel] co-processor offset out of range issue in Debian armhf.

2017-01-26 Thread Jeppe Johansen

On 01/26/2017 04:12 PM, peter green wrote:


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: Assembler messages:
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

The first error corresponds to the vstr instruction on line 3775 below:

# [593] lScanResX :=  round(readParFloat);
 movr0,r11
 blxPARCONVERT$_$READ_PAR2NII$crcDDE5A164_$$_READPARFLOAT$$DOUBLE
 blxfpc_round_real
 blxfpc_int64_to_double
 vmov.f64d1,d0
 subr0,r11,#143360
 vstrd1,[r0, #-2528]

Which in turn, corresponds to line 593 of parconvert.pas:

   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
___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel


[fpc-devel] co-processor offset out of range issue in Debian armhf.

2017-01-26 Thread 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: Assembler messages:
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

The first error corresponds to the vstr instruction on line 3775 below:

# [593] lScanResX :=  round(readParFloat);
 movr0,r11
 blxPARCONVERT$_$READ_PAR2NII$crcDDE5A164_$$_READPARFLOAT$$DOUBLE
 blxfpc_round_real
 blxfpc_int64_to_double
 vmov.f64d1,d0
 subr0,r11,#143360
 vstrd1,[r0, #-2528]

Which in turn, corresponds to line 593 of parconvert.pas:

   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.

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