<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    On 01/26/2017 04:12 PM, peter green wrote:<br>
    <blockquote
      cite="mid:bc8a0824-d10b-d797-da57-a89bc1bf788d@p10link.net"
      type="cite">
      <meta http-equiv="content-type" content="text/html;
        charset=windows-1252">
      <p>mricron is failing to build for Debian armhf, specifically we
        are getting a bunch of "co-processor offset out of range"
        errors. <br>
      </p>
      <p> </p>
      <blockquote type="cite">
        <pre class="message">(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);
    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]

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

      if lUpCaseStr = 'SCANRESOLUTION(XY)' then begin
         lScanResX :=  round(readParFloat);
         lScanResY :=  round(readParFloat);</pre>
      </blockquote>
      More detail at <a moz-do-not-send="true"
        class="moz-txt-link-freetext"
        href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=851834">https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=851834</a><br>
      <p>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.<br>
      </p>
    </blockquote>
    I'm fairly certain this is from spilling code as the only other case
    has bounds checks.<br>
    The code in question also has a huge number of local variables, so
    that supports this case.<br>
    <br>
    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<br>
    <br>
    Best Regards,<br>
    Jeppe<br>
    <meta http-equiv="content-type" content="text/html;
      charset=windows-1252">
  </body>
</html>