Hi, I am trying to build the Squeak VM on 64-bit linux with gcc 4.1 but am having problems with both compiling the sources and running images. I'm found some information on www.squeakvm.org/squeak64, however I'm not sure how up to date it is. I've downloaded the latest sources from the squeak-vm subversion repository and have tried building it using several different compile options. Trying to compile as per the standard instructions succeeds, but I am not sure what if it compiles a 32 or 64 bit VM. Regardless this VM crashes using the standard Squeak3.9-final-7067 image with a segmentation fault. "16256940 SmalltalkImage>snapshot:andQuit:embedded: 16256824 SmalltalkImage>snapshot:andQuit: 16256396 SmalltalkImage>saveImageInFileNamed: ... 16243080 PasteUpMorph>doOneCycle 15589312 [] in >spawnNewProcess 15589496 [] in BlockContext>newProcess Aborted (core dumped)" I found a 64-bit image sq64-10-dtl.image on http://www.barnet.sk/software/squeak however the VM will not load this either, giving the error "This interpreter (vers. 6502) cannot read image file (vers. 68000). Press CR to quit..." If I run configure with the options "with-src=src64" or "with-src=src32" (as I have 32bit compatibility libraries installed) the compile exits with "gcc -g -O2 -DLSB_FIRST=1 -o squeak disabledPlugins.o version.o -Wl,--export-dynamic vm/vm.a B2DPlugin/B2DPlugin.a BitBltPlugin/BitBltPlugin.a FilePlugin/FilePlugin.a SocketPlugin/SocketPlugin.a -lutil -ldl -lm -lnsl vm/vm.a -Wl,--rpath -Wl,/usr/local/lib vm/vm.a(sqVirtualMachine.o): In function `sqGetInterpreterProxy': /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMachine.c:202: undefined reference to `obsoleteDontUseThisFetchWordofObject' /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMachine.c:333: undefined reference to `fetchLong32ofObject' /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMachine.c:334: undefined reference to `getThisSessionID' /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMachine.c:335: undefined reference to `ioFilenamefromStringofLengthresolveAliases' /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMachine.c:336: undefined reference to `vmEndianness' collect2: ld returned 1 exit status" Is anyone running Squeak currently on a 64bit system - what needs to be done to get a basic VM and image (32 or 64 bit) working? Many Thanks, Mandeep |
Hi Mandeep, On Sun, May 20, 2007 at 12:56:20PM +0100, Mandeep Gill wrote: > > I am trying to build the Squeak VM on 64-bit linux with gcc 4.1 but am > having problems with both compiling the sources and running images. > I'm found some information on www.squeakvm.org/squeak64, however I'm > not sure how up to date it is. It's not up to date at all. > I've downloaded the latest sources from the squeak-vm subversion > repository and have tried building it using several different compile > options. > > Trying to compile as per the standard instructions succeeds, but I am > not sure what if it compiles a 32 or 64 bit VM. Regardless this VM > crashes using the standard Squeak3.9-final-7067 image with a > segmentation fault. First some terminology. When Ian and Dan did the 64 bit port, they used the term "64 bit image" to refer to an image in which all of the object pointers had been converted from 32 bit values to 64 bit values, and the term "64 bit host" to refer to a platform with 64 bit machine pointer size. Any combination of 32/64 bit host and 32/64 bit image is possible, but the combination you are interested in for you machine is 64 bit host and 32 bit image (all currently available Squeak images are still in 32 bit format). When you ran the 64 bit VM that you found on the internet, you were running the 64 bit image/64 bit host flavor, and it was expecting you to feed it a 64 bit image. When you fed it a normal 32 bit image, it complained about not understanding the image format. Back to your original question. Yes, some people are running 64 bit systems, although very few seem to be working with 64 bit images. The current VMMaker and Subversion sources are somewhat broken for 64 bit systems. In order to build a VM to run 32 bit images on your 64 bit host, you will need to add at least a couple of patches. I think that the following will be sufficient to get you going: - In your platforms directory (the one you got from Subversion), the sqMemoryAccess.h file needs a patch. This is in Mantis bug report 4608 <http://bugs.squeak.org/view.php?id=4608>, and the actual patched file is <http://bugs.squeak.org/file_download.php?file_id=2809&type=bug>. - Apply the fix in Mantis 5688. You don't need this to get a running VM, but you will not be able to connect to SqueakMap until you have included this fix in your VM. There are some other issues listed in the Mantis "Squeak 64 bit" category, but I don't think you need to worry about them if you are just running 32 bit images. Hope this helps, Dave |
In reply to this post by Mandeep Gill
2007/5/20, Mandeep Gill <[hidden email]>: > > Hi, > > I am trying to build the Squeak VM on 64-bit linux with gcc 4.1 but am > having problems with both compiling the sources and running images. > I'm found some information on www.squeakvm.org/squeak64, however I'm > not sure how up to date it is. > > I've downloaded the latest sources from the squeak-vm subversion > repository and have tried building it using several different compile > options. > > Trying to compile as per the standard instructions succeeds, but I am > not sure what if it compiles a 32 or 64 bit VM. Regardless this VM > crashes using the standard Squeak3.9-final-7067 image with a > segmentation fault. > > "16256940 SmalltalkImage>snapshot:andQuit:embedded: > 16256824 SmalltalkImage>snapshot:andQuit: > 16256396 SmalltalkImage>saveImageInFileNamed: > ... > 16243080 PasteUpMorph>doOneCycle > 15589312 [] in >spawnNewProcess > 15589496 [] in BlockContext>newProcess > Aborted (core dumped)" > > I found a 64-bit image sq64-10-dtl.image on > http://www.barnet.sk/software/squeak however the VM will not load this > either, giving the error > > "This interpreter (vers. 6502) cannot read image file (vers. 68000). > Press CR to quit..." > > If I run configure with the options "with-src=src64" or > "with-src=src32" (as I have 32bit compatibility libraries installed) > the compile exits with > > "gcc -g -O2 -DLSB_FIRST=1 -o squeak disabledPlugins.o version.o > -Wl,--export-dynamic vm/vm.a B2DPlugin/B2DPlugin.a > BitBltPlugin/BitBltPlugin.a FilePlugin/FilePlugin.a > SocketPlugin/SocketPlugin.a -lutil -ldl -lm -lnsl vm/vm.a -Wl,--rpath > -Wl,/usr/local/lib > vm/vm.a(sqVirtualMachine.o): In function `sqGetInterpreterProxy': > /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMachine.c:202: > undefined reference to `obsoleteDontUseThisFetchWordofObject' > /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMachine.c:333: > undefined reference to `fetchLong32ofObject' > /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMachine.c:334: > undefined reference to `getThisSessionID' > /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMachine.c:335: > undefined reference to `ioFilenamefromStringofLengthresolveAliases' > /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMachine.c:336: > undefined reference to `vmEndianness' > collect2: ld returned 1 exit status" > > Is anyone running Squeak currently on a 64bit system - what needs to > be done to get a basic VM and image (32 or 64 bit) working? All the people I know running Squeak on 64bit systems (including myself) run the 32bit VM in emulation mode. Cheers Philippe > Many Thanks, > Mandeep > |
Am Sunday 20 May 2007 schrieb Philippe Marschall: > 2007/5/20, Mandeep Gill <[hidden email]>: > > Hi, > > > > I am trying to build the Squeak VM on 64-bit linux with gcc 4.1 but am > > having problems with both compiling the sources and running images. > > I'm found some information on www.squeakvm.org/squeak64, however I'm > > not sure how up to date it is. > > > > I've downloaded the latest sources from the squeak-vm subversion > > repository and have tried building it using several different compile > > options. > > > > Trying to compile as per the standard instructions succeeds, but I am > > not sure what if it compiles a 32 or 64 bit VM. Regardless this VM > > crashes using the standard Squeak3.9-final-7067 image with a > > segmentation fault. > > > > "16256940 SmalltalkImage>snapshot:andQuit:embedded: > > 16256824 SmalltalkImage>snapshot:andQuit: > > 16256396 SmalltalkImage>saveImageInFileNamed: > > ... > > 16243080 PasteUpMorph>doOneCycle > > 15589312 [] in >spawnNewProcess > > 15589496 [] in BlockContext>newProcess > > Aborted (core dumped)" > > > > I found a 64-bit image sq64-10-dtl.image on > > http://www.barnet.sk/software/squeak however the VM will not load this > > either, giving the error > > > > "This interpreter (vers. 6502) cannot read image file (vers. 68000). > > Press CR to quit..." > > > > If I run configure with the options "with-src=src64" or > > "with-src=src32" (as I have 32bit compatibility libraries installed) > > the compile exits with > > > > "gcc -g -O2 -DLSB_FIRST=1 -o squeak disabledPlugins.o version.o > > -Wl,--export-dynamic vm/vm.a B2DPlugin/B2DPlugin.a > > BitBltPlugin/BitBltPlugin.a FilePlugin/FilePlugin.a > > SocketPlugin/SocketPlugin.a -lutil -ldl -lm -lnsl vm/vm.a -Wl,--rpath > > -Wl,/usr/local/lib > > vm/vm.a(sqVirtualMachine.o): In function `sqGetInterpreterProxy': > > /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMa > >chine.c:202: undefined reference to > > `obsoleteDontUseThisFetchWordofObject' > > /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMa > >chine.c:333: undefined reference to `fetchLong32ofObject' > > /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMa > >chine.c:334: undefined reference to `getThisSessionID' > > /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMa > >chine.c:335: undefined reference to > > `ioFilenamefromStringofLengthresolveAliases' > > /home/mandeep/dev/tmp/squeak/squeak-svn/platforms/Cross/vm/sqVirtualMa > >chine.c:336: undefined reference to `vmEndianness' > > collect2: ld returned 1 exit status" > > > > Is anyone running Squeak currently on a 64bit system - what needs to > > be done to get a basic VM and image (32 or 64 bit) working? > > All the people I know running Squeak on 64bit systems (including > myself) run the 32bit VM in emulation mode. I'm using a 64bit VM (with a 32bit image) for more than a year now. After fixing the bug in sqMemoryAccess.h and a problem with networking I never had a problem with the vm. Building the VM for 32bit images is very easy. Just checkout the sources and run configure and make. Worked for me. Martin |
Free forum by Nabble | Edit this page |