VM issues.

Alan Grimes alangrimes at starpower.net
Mon Mar 7 18:57:10 UTC 2005


>Have you re-run bld-i386/config.status or re-run configure (after deleting the whole build directory)
>after changing the list of internal or external plugins?
>  
>

Yes, every time.
I have not re-built my /src in several days, but each time I attempt a 
make I remove everything and run a configure first.

>Have you tried building with only the minimum required number of plugins (like the list below),
>or with all the plugins external?
>  
>

1. I don't think that will work because every plugin you listed there 
has it's corresponding
##
vm/vm.a(sqNamedPrims.o)(.data+0x3c): undefined reference to 
`FilePlugin_exports'
##
line in my previous posting. =P

Naturally, it is actually defined:
##
./FilePlugin/FilePlugin.a:FilePlugin.o:00000020 D FilePlugin_exports
##

and listed in the invocation of gcc that triggered the error message.




If it weren't frustrating, it wouldn't be a GNU compiler!



>For instance, the B3D plugin has a number of external dependencies that can cause problems.
>Likewise for the FFI plugin.
>  
>

It works just fine in my workhorse VM and it compiled without error or 
warning.

>Are you running the stock Makefile (i.e. you're using libtool for the compilation, etc.)?
>  
>

Not exactly, recall that my distro didn't like the ltmain.sh from the 
SVN archives so I had to run libtoolize on it.

>$ find . -name "*.[oa]" -exec nm -A {} \; | grep _exports
>./disabledPlugins.o:00000024 B ObjectiveCPlugin_exports
>./disabledPlugins.o:00000000 B vm_display_Quartz_exports
>./disabledPlugins.o:0000000c B vm_sound_MacOSX_exports
>./disabledPlugins.o:00000018 B vm_sound_Sun_exports
>./vm/gnu-interp.o:000022a0 D vm_exports
>./vm/sqNamedPrims.o:         U FilePlugin_exports
>./vm/sqNamedPrims.o:         U FloatArrayPlugin_exports
>./vm/sqNamedPrims.o:         U LargeIntegers_exports
>./vm/sqNamedPrims.o:         U os_exports
>./vm/sqNamedPrims.o:         U SecurityPlugin_exports
>./vm/sqNamedPrims.o:         U SocketPlugin_exports
>./vm/sqNamedPrims.o:         U vm_exports
>./vm/osExports.o:00000000 D os_exports
>./vm/vm.a:gnu-interp.o:000022a0 D vm_exports
>./vm/vm.a:sqNamedPrims.o:         U FilePlugin_exports
>./vm/vm.a:sqNamedPrims.o:         U FloatArrayPlugin_exports
>./vm/vm.a:sqNamedPrims.o:         U LargeIntegers_exports
>./vm/vm.a:sqNamedPrims.o:         U os_exports
>./vm/vm.a:sqNamedPrims.o:         U SecurityPlugin_exports
>./vm/vm.a:sqNamedPrims.o:         U SocketPlugin_exports
>./vm/vm.a:sqNamedPrims.o:         U vm_exports
>./vm/vm.a:osExports.o:00000000 D os_exports
>./FilePlugin/FilePlugin.o:00000020 D FilePlugin_exports
>./FilePlugin/FilePlugin.a:FilePlugin.o:00000020 D FilePlugin_exports
>./FloatArrayPlugin/FloatArrayPlugin.o:00000020 D FloatArrayPlugin_exports
>./FloatArrayPlugin/FloatArrayPlugin.a:FloatArrayPlugin.o:00000020 D FloatArrayPlugin_exports
>./LargeIntegers/LargeIntegers.o:00000020 D LargeIntegers_exports
>./LargeIntegers/LargeIntegers.a:LargeIntegers.o:00000020 D LargeIntegers_exports
>./SecurityPlugin/SecurityPlugin.o:00000020 D SecurityPlugin_exports
>./SecurityPlugin/SecurityPlugin.a:SecurityPlugin.o:00000020 D SecurityPlugin_exports
>./SocketPlugin/SocketPlugin.o:00000020 D SocketPlugin_exports
>./SocketPlugin/SocketPlugin.a:SocketPlugin.o:00000020 D SocketPlugin_exports
>  
>

>Note that the compilation and linking should look more or less like this:
>
>gcc -g -O2 -fomit-frame-pointer -DLSB_FIRST=1  -DHAVE_CONFIG_H  -DSQUEAK_BUILTIN_PLUGIN -I/home/ned/Squeak/VM/svn/bld-i386 -I/home/ned/Squeak/VM/svn/platforms/unix/vm -I/home/ned/Squeak/VM/svn/platforms/Cross/vm -I/home/ned/Squeak/VM/svn/platforms/Cross/vm -I/home/ned/Squeak/VM/svn/platforms/unix/vm -I/home/ned/Squeak/VM/svn/src/vm -I/home/ned/Squeak/VM/svn/platforms/Cross/plugins/FilePlugin -I/home/ned/Squeak/VM/svn/platforms/unix/plugins/B3DAcceleratorPlugin -I/home/ned/Squeak/VM/svn/bld-i386 -I/home/ned/Squeak/VM/svn/platforms/unix/vm -I/home/ned/Squeak/VM/svn/platforms/Cross/vm -I/usr/X11R6/include   -c -o sqNamedPrims.o /home/ned/Squeak/VM/svn/platforms/Cross/vm/sqNamedPrims.c
>  
>


gcc -g -O2 -fomit-frame-pointer -DLSB_FIRST=1 -march=athlon-mp 
-DHAVE_CONFIG_H  -DSQUEAK_BUILTIN_PLUGIN -I/home/atg/source/trunk/bld 
-I/home/atg/source/trunk/platforms/unix/vm 
-I/home/atg/source/trunk/platforms/Cross/vm 
-I/home/atg/source/trunk/platforms/Cross/vm 
-I/home/atg/source/trunk/platforms/unix/vm 
-I/home/atg/source/trunk/src/vm 
-I/home/atg/source/trunk/platforms/Cross/plugins/FilePlugin 
-I/home/atg/source/trunk/platforms/unix/plugins/B3DAcceleratorPlugin 
-I/home/atg/source/trunk/bld -I/home/atg/source/trunk/platforms/unix/vm 
-I/home/atg/source/trunk/platforms/Cross/vm -I/usr/X11R6/include   -c -o 
sqNamedPrims.o /home/atg/source/trunk/platforms/Cross/vm/sqNamedPrims.c

The only notable difference between these two is that I use 
XCFLAGS=-march=athlon-mp

>ar -rc vm.a gnu-interp.o sqNamedPrims.o sqVirtualMachine.o aio.o debug.o osExports.o sqUnixExternalPrims.o sqUnixMemory.o sqUnixCharConv.o sqUnixMain.o
>  
>

ar -rc vm.a gnu-interp.o sqNamedPrims.o sqVirtualMachine.o aio.o debug.o 
osExports.o sqUnixExternalPrims.o sqUnixMemory.o sqUnixCharConv.o 
sqUnixMain.o

>ranlib vm.a
>  
>

ranlib vm.a

>gcc -g -O2 -fomit-frame-pointer -DLSB_FIRST=1  -DHAVE_CONFIG_H  -DSQUEAK_BUILTIN_PLUGIN -I/home/ned/Squeak/VM/svn/bld-i386 -I/home/ned/Squeak/VM/svn/platforms/unix/vm -I/home/ned/Squeak/VM/svn/platforms/Cross/vm -I/home/ned/Squeak/VM/svn/platforms/Cross/plugins/FilePlugin    -c -o FilePlugin.o /home/ned/Squeak/VM/svn/src/vm/intplugins/FilePlugin/FilePlugin.c
>ar -rc FilePlugin.a FilePlugin.o sqFilePluginBasicPrims.o sqUnixFile.o
>  
>

gcc -g -O2 -fomit-frame-pointer -DLSB_FIRST=1 -march=athlon-mp 
-DHAVE_CONFIG_H  -DSQUEAK_BUILTIN_PLUGIN -I/home/atg/source/trunk/bld 
-I/home/atg/source/trunk/platforms/unix/vm 
-I/home/atg/source/trunk/platforms/Cross/vm 
-I/home/atg/source/trunk/platforms/Cross/plugins/FilePlugin    -c -o 
sqUnixFile.o 
/home/atg/source/trunk/platforms/unix/plugins/FilePlugin/sqUnixFile.c

>ranlib FilePlugin.a
>  
>
ranlib FilePlugin.a

>[and so on]
>  
>

I tried both single and double-threaded builds, the results are the same 
except the order of some of the invocations...

>gcc -g -O2 -fomit-frame-pointer -DLSB_FIRST=1 -o squeak disabledPlugins.o version.o -Wl,--export-dynamic  vm/vm.a FilePlugin/FilePlugin.a FloatArrayPlugin/FloatArrayPlugin.a LargeIntegers/LargeIntegers.a SecurityPlugin/SecurityPlugin.a SocketPlugin/SocketPlugin.a -lutil -ldl -lm -lnsl vm/vm.a -Wl,--rpath -Wl,/usr/local/lib
>  
>

--- And I've already shown you what happens when it tries to do this 
command...


I just ran "make 2> errors" and that didn't reveal anything noteworthy.



More information about the Squeak-dev mailing list