Hi!
I'm trying to build a unix vm on 64 bit AMD (system is debian sid) for use with 32 bit images. I'm using the current svn trunk and build with the src32 directory. Things go well until the link step:
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/lib vm/vm.a(sqVirtualMachine.o): In function `sqGetInterpreterProxy':/home/kuball/SMT/vm-svn/trunk/platforms/Cross/vm/sqVirtualMachine.c:202: undefined reference to `obsoleteDontUseThisFetchWordofObject' :/home/kuball/SMT/vm-svn/trunk/platforms/Cross/vm/sqVirtualMachine.c:333: undefined reference to `fetchLong32ofObject' :/home/kuball/SMT/vm-svn/trunk/platforms/Cross/vm/sqVirtualMachine.c:334: undefined reference to `getThisSessionID' :/home/kuball/SMT/vm-svn/trunk/platforms/Cross/vm/sqVirtualMachine.c:335: undefined reference to `ioFilenamefromStringofLengthresolveAliases' :/home/kuball/SMT/vm-svn/trunk/platforms/Cross/vm/sqVirtualMachine.c:336: undefined reference to `vmEndianness'
As you can see some methods are missing from interp.c. Can anybody help me fixing this problem?
Martin
Did you generate the VM sources yourself using VMMaker?
Josh
On May 2, 2006, at 3:43 PM, Martin Kuball wrote:
Hi!
I'm trying to build a unix vm on 64 bit AMD (system is debian sid) for use with 32 bit images. I'm using the current svn trunk and build with the src32 directory. Things go well until the link step:
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/lib vm/vm.a(sqVirtualMachine.o): In function `sqGetInterpreterProxy':/home/kuball/SMT/vm-svn/trunk/platforms/ Cross/vm/sqVirtualMachine.c:202: undefined reference to `obsoleteDontUseThisFetchWordofObject' :/home/kuball/SMT/vm-svn/trunk/platforms/Cross/vm/ sqVirtualMachine.c:333: undefined reference to `fetchLong32ofObject' :/home/kuball/SMT/vm-svn/trunk/platforms/Cross/vm/ sqVirtualMachine.c:334: undefined reference to `getThisSessionID' :/home/kuball/SMT/vm-svn/trunk/platforms/Cross/vm/ sqVirtualMachine.c:335: undefined reference to `ioFilenamefromStringofLengthresolveAliases' :/home/kuball/SMT/vm-svn/trunk/platforms/Cross/vm/ sqVirtualMachine.c:336: undefined reference to `vmEndianness'
As you can see some methods are missing from interp.c. Can anybody help me fixing this problem?
Martin
On May 3, 2006, at 11:59 AM, Martin Kuball wrote:
Am Tuesday, 2. May 2006 23:26 schrieb Josh Gargus:
Did you generate the VM sources yourself using VMMaker?
Josh
No, I just issued a "svn update" and started the build. But I will try the steps David outlined in his answer.
platforms/unix/src{32,64} were deleted a while ago, replaced with a single platforms/unix/src directory. Your update should have deleted the former and added the latter. If not you might want to remove everything and checkout a fresh copy.
Cheers, Ian
Am Wednesday, 3. May 2006 22:46 schrieb Ian Piumarta:
On May 3, 2006, at 11:59 AM, Martin Kuball wrote:
Am Tuesday, 2. May 2006 23:26 schrieb Josh Gargus:
Did you generate the VM sources yourself using VMMaker?
Josh
No, I just issued a "svn update" and started the build. But I will try the steps David outlined in his answer.
platforms/unix/src{32,64} were deleted a while ago, replaced with a single platforms/unix/src directory. Your update should have deleted the former and added the latter. If not you might want to remove everything and checkout a fresh copy.
Cheers, Ian
I made a fresh checkout using svn co http://squeakvm.org/svn/squeak/trunk squeak Svn tells me I'm on revision 1508. But I still have the src32 and src64 directorys. Maybe they were not really deleted?
Anyway, if you say I should not care about them I will do so. But how do I tell the configure what type of vm I want to build?
Martin
On May 4, 2006, at 12:48 PM, Martin Kuball wrote:
I made a fresh checkout using svn co http://squeakvm.org/svn/squeak/trunk squeak Svn tells me I'm on revision 1508. But I still have the src32 and src64 directorys. Maybe they were not really deleted?
I guess subversion implements some strange definition of 'delete' with which I was not previously familiar.
But how do I tell the configure what type of vm I want to build?
Short answer: run 'configure --help'.
Long answer: configure will look fir a directory called 'src' by default (relative to platforms/unix/), ignoring src32/64. If you want it to look for generated sources in some other place then use the '--with-src' option. E.g:
../platforms/unix/config/configure --with-src=src64
will use platforms/unix/src64; or even
../platforms/unix/config/configure --with-src=../../src32
if you ran VMMaker in the dir containing 'platforms' and didn't manually change the location of the generated sources before generating a 32-bit VM.
Cheers, Ian
Am 04.05.2006 um 23:35 schrieb Ian Piumarta:
On May 4, 2006, at 12:48 PM, Martin Kuball wrote:
I made a fresh checkout using svn co http://squeakvm.org/svn/squeak/trunk squeak Svn tells me I'm on revision 1508. But I still have the src32 and src64 directorys. Maybe they were not really deleted?
I guess subversion implements some strange definition of 'delete' with which I was not previously familiar.
After you did a "svn rm" you still need to "svn commit".
The last log entry is a year old from where you added the tree:
bert.vektor ~ % svn log http://squeakvm.org/svn/squeak/trunk/ platforms/unix/src32 ------------------------------------------------------------------------ r1155 | piumarta | 2005-04-01 02:44:01 +0200 (Fri, 01 Apr 2005) | 1 line
new 32- and 64-bit src ------------------------------------------------------------------------
- Bert -
Am Thursday, 4. May 2006 23:35 schrieb Ian Piumarta:
On May 4, 2006, at 12:48 PM, Martin Kuball wrote:
I made a fresh checkout using svn co http://squeakvm.org/svn/squeak/trunk squeak Svn tells me I'm on revision 1508. But I still have the src32 and src64 directorys. Maybe they were not really deleted?
I guess subversion implements some strange definition of 'delete' with which I was not previously familiar.
But how do I tell the configure what type of vm I want to build?
Short answer: run 'configure --help'.
Long answer: configure will look fir a directory called 'src' by default (relative to platforms/unix/), ignoring src32/64. If you want it to look for generated sources in some other place then use the '--with-src' option. E.g:
../platforms/unix/config/configure --with-src=src64
will use platforms/unix/src64; or even
../platforms/unix/config/configure --with-src=../../src32
if you ran VMMaker in the dir containing 'platforms' and didn't manually change the location of the generated sources before generating a 32-bit VM.
Cheers, Ian
So you still need the src32 or src64 directories? Why than delete them? Anyway, I installed VMMaker and generated the source I need. But doing that I noticed that I'm still missing something. I see that I can switch between 64 bit and 32 bit in VMMaker. But where does the information about the pointer size of the target cpu come from? Is it done via the configure script?
Martin
Martin,
I think I've seen these symptoms in the past.
Try symlinking your ./src32 to ./src, then re-run platforms/unix/config/configure and make.
Perhaps there is some difference of opinion between VMMaker conventions and something in the unix configuration scripts. Sorry, I never took the time to find the root cause, but linking the "src32" name that VMM expects to the "src" name that configure expects seems to make it go away.
Dave
p.s. Ian recently mentioned the possibility of enhancing the support code such that only one ./src would be required for building 32 bit and 64 bit VMs, at which point this sort of problem should disappear for good.
On Tue, May 02, 2006 at 10:43:05PM +0200, Martin Kuball wrote:
Hi!
I'm trying to build a unix vm on 64 bit AMD (system is debian sid) for use with 32 bit images. I'm using the current svn trunk and build with the src32 directory. Things go well until the link step:
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/lib vm/vm.a(sqVirtualMachine.o): In function `sqGetInterpreterProxy':/home/kuball/SMT/vm-svn/trunk/platforms/Cross/vm/sqVirtualMachine.c:202: undefined reference to `obsoleteDontUseThisFetchWordofObject' :/home/kuball/SMT/vm-svn/trunk/platforms/Cross/vm/sqVirtualMachine.c:333: undefined reference to `fetchLong32ofObject' :/home/kuball/SMT/vm-svn/trunk/platforms/Cross/vm/sqVirtualMachine.c:334: undefined reference to `getThisSessionID' :/home/kuball/SMT/vm-svn/trunk/platforms/Cross/vm/sqVirtualMachine.c:335: undefined reference to `ioFilenamefromStringofLengthresolveAliases' :/home/kuball/SMT/vm-svn/trunk/platforms/Cross/vm/sqVirtualMachine.c:336: undefined reference to `vmEndianness'
As you can see some methods are missing from interp.c. Can anybody help me fixing this problem?
Martin
vm-dev@lists.squeakfoundation.org