[M3devel] WebFile/QScanner use of File.T.status().size (64bit file size on 32bit platform)

Tony Hosking hosking at cs.purdue.edu
Fri Jan 15 23:48:09 CET 2010


My point is that you need to bootstrap a new compiler as follows:

Build new compiler against old libraries.
Compile new libraries using new compiler.
Recompile new compiler against new libraries.
Throw away old libraries.

On 15 Jan 2010, at 17:13, Jay K wrote:

> That is ok but what about building new cm3/m3quake/sysutils packages with old tools/libraries?
> They previously never used LONGINT, including converting LONGINT to INTEGER.
> *I* changed that, not you.
> But then I decided it was a mistake.
>  
>  
>  - Jay
> 
>  
> From: hosking at cs.purdue.edu
> Date: Fri, 15 Jan 2010 17:08:08 -0500
> To: jay.krell at cornell.edu
> CC: m3devel at elegosoft.com; m3commit at elegosoft.com
> Subject: Re: [M3devel] WebFile/QScanner use of File.T.status().size (64bit file size on 32bit platform)
> 
> Fact.  New versions of m3core won't be able to build with old tools/libraries.  We have to live with that.
> 
> On 15 Jan 2010, at 16:34, Jay K wrote:
> 
> We were in a state where neither m3core nor cm3/m3quake could be built with old tools/libraries.
> That is more ok for m3core, less ok for cm3/m3quake.
> As well, m3core also couldn't be built with recent but slightly old compiler.
>     See, I didn't remove the use of LONGINT, just the use of VAL(LONGINT, INTEGER).
>     As well, maybe cm3/m3quake couldn't be built with recent tools/libraries.
>  
>  
> The sysutils/m3quake/cm3 changes should stand?
> Ok removing "32" from the name and letting it return >4GB on 64bit platforms.
> But I think either it can't use libm3.File.T.status().size, OR we have to
> make status().size more compatible such as by introducing statusL or sizeL.
> 32bit code wouldn't see >4GB file sizes unless actively changed.
> Maybe not a bad idea.
>  
>  
>  - Jay
> 
>  
> From: hosking at cs.purdue.edu
> Date: Fri, 15 Jan 2010 16:17:15 -0500
> To: jay.krell at cornell.edu
> CC: m3devel at elegosoft.com; m3commit at elegosoft.com
> Subject: Re: [M3devel] WebFile/QScanner use of File.T.status().size (64bit file size on 32bit platform)
> 
> On 15 Jan 2010, at 15:57, Jay K wrote:
> 
> I at least did move the hacks to one place.
> I agree it isn't nice.
> This is due to my changes, not yours -- changing File.T.status().size to LONGINT.
> There's no way to use that in the "compiler" and still support old compiler/libm3, right?
> 
> RIght.  Except we should not try to maintain compatibility between among trunk versions.  If you want to build as of a particular version then use libraries that match that version.
> 
> My next set of commits for LONGCARD make this even more critical because the library has hardwired stuff that that makes it require a particular version of the compiler to compile it.  ;-)
> 
> Ok now that I centralized it to sysutils?
>  
>  
> Leave status() alone as using INTEGER and introduce statusL()?
>  
>  
> Or leave size alone and introduce sizeL?
>  That's not a complete solution because you have to set size to something.
>   -1 if it doesn't fit?
>  
>  
> Or just get past the bootstrapping and put it back using VAL?
> 
> Yes.
> 
> It seems a tough situation..the compiler is otherwise I believe
> very compatible with old compiler/libm3.
> 
> It very soon will not be.
> 
>  
>  
>  - Jay
> 
>  
> > From: hosking at cs.purdue.edu
> > Date: Fri, 15 Jan 2010 10:13:06 -0500
> > To: jkrell at elego.de
> > CC: m3commit at elegosoft.com
> > Subject: Re: [M3commit] CVS Update: cm3
> > 
> > Jay, all of these changes seem unnecessary (and worse, clutter the source with a variety of hacks). I had no problem building against both versions of m3core and libm3 in order to bootstrap a new compiler. What is going on here?
> > 
> > On 15 Jan 2010, at 14:41, Jay Krell wrote:
> > 
> > > CVSROOT: /usr/cvs
> > > Changes by: jkrell at birch. 10/01/15 14:41:00
> > > 
> > > Modified files:
> > > cm3/m3-sys/m3quake/src/: QCompiler.m3 QScanner.i3 QScanner.m3 
> > > m3makefile 
> > > Added files:
> > > cm3/m3-sys/m3quake/src/: QScannerC.c 
> > > 
> > > Log message:
> > > m3quake also can't use libm3 File.T.status().size and be compatible
> > > with both old and new libm3 (INTEGER vs. LONGINT)
> > 
> 
> 
> 
> 




More information about the M3devel mailing list