[Vm-dev] attempting to build BochsX64Plugin on 32-bit Ubuntu

Robert Withers robert.w.withers at gmail.com
Thu Oct 22 02:26:35 UTC 2015


I am not sure it is possible, even. Can this plugin be build 32-bit; 
does it make any sense to do so?

Here is the make portion of this attempt for this plugin. I am unsure 
how to deal with this C++ issue in the 
Cross/plugins/BochsX64Plugin/sqUnixBochsX64Plugin.cpp file.


/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp: 
In function 'int resetCPU(void*)':
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:68:47: 
error: 'struct bx_descriptor_t::<anonymous union>::<anonymous>' has no 
member named 'l'
    bx_cpu.sregs[BX_SEG_REG_CS].cache.u.segment.l     = 1; // 64-bit seg


Thank you,
Robert


/bin/bash 
/home/rabbit/warren/oscogvm/build.linux32x86/squeak.cog.spur/build/libtool 
--mode=compile gcc -m32 -g -O2 -DNDEBUG -DDEBUGVM=0 -msse2 -D_GNU_SOURCE 
-D_FILE_OFFSET_BITS=64 -DCOGMTVM=0 -DLSB_FIRST=1 -m32 -DHAVE_CONFIG_H 
-I/home/rabbit/warren/oscogvm/build.linux32x86/squeak.cog.spur/build 
-I/home/rabbit/warren/oscogvm/build.linux32x86/squeak.cog.spur/build 
-I/home/rabbit/warren/oscogvm/platforms/unix/vm 
-I/home/rabbit/warren/oscogvm/platforms/Cross/vm 
-I/home/rabbit/warren/oscogvm/spursrc/vm 
-I/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin 
-m32 -DUSE_BOCHS_CONFIG_H=1 
-I/home/rabbit/warren/oscogvm/processors/IA32/linuxbochs 
-I/home/rabbit/warren/oscogvm/processors/IA32/bochs 
-I/home/rabbit/warren/oscogvm/processors/IA32/bochs/instrument/stubs -c 
-o BochsX64Plugin.lo 
/home/rabbit/warren/oscogvm/src/plugins/BochsX64Plugin/BochsX64Plugin.c
gcc -m32 -g -O2 -DNDEBUG -DDEBUGVM=0 -msse2 -D_GNU_SOURCE 
-D_FILE_OFFSET_BITS=64 -DCOGMTVM=0 -DLSB_FIRST=1 -m32 -DHAVE_CONFIG_H 
-I/home/rabbit/warren/oscogvm/build.linux32x86/squeak.cog.spur/build 
-I/home/rabbit/warren/oscogvm/build.linux32x86/squeak.cog.spur/build 
-I/home/rabbit/warren/oscogvm/platforms/unix/vm 
-I/home/rabbit/warren/oscogvm/platforms/Cross/vm 
-I/home/rabbit/warren/oscogvm/spursrc/vm 
-I/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin 
-m32 -DUSE_BOCHS_CONFIG_H=1 
-I/home/rabbit/warren/oscogvm/processors/IA32/linuxbochs 
-I/home/rabbit/warren/oscogvm/processors/IA32/bochs 
-I/home/rabbit/warren/oscogvm/processors/IA32/bochs/instrument/stubs -c 
/home/rabbit/warren/oscogvm/src/plugins/BochsX64Plugin/BochsX64Plugin.c 
-fPIC -DPIC -DPIC -o BochsX64Plugin.o
mv -f BochsX64Plugin.o BochsX64Plugin.lo
/bin/bash 
/home/rabbit/warren/oscogvm/build.linux32x86/squeak.cog.spur/build/libtool 
--mode=compile g++ -g -O2 -DNDEBUG -DDEBUGVM=0 -msse2 -D_GNU_SOURCE 
-D_FILE_OFFSET_BITS=64 -DCOGMTVM=0 -DLSB_FIRST=1  -m32 -DHAVE_CONFIG_H 
-I/home/rabbit/warren/oscogvm/build.linux32x86/squeak.cog.spur/build 
-I/home/rabbit/warren/oscogvm/build.linux32x86/squeak.cog.spur/build 
-I/home/rabbit/warren/oscogvm/platforms/unix/vm 
-I/home/rabbit/warren/oscogvm/platforms/Cross/vm 
-I/home/rabbit/warren/oscogvm/spursrc/vm 
-I/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin 
-m32 -DUSE_BOCHS_CONFIG_H=1 
-I/home/rabbit/warren/oscogvm/processors/IA32/linuxbochs 
-I/home/rabbit/warren/oscogvm/processors/IA32/bochs 
-I/home/rabbit/warren/oscogvm/processors/IA32/bochs/instrument/stubs -c 
-o sqBochsX64Plugin.lo 
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp
g++ -g -O2 -DNDEBUG -DDEBUGVM=0 -msse2 -D_GNU_SOURCE 
-D_FILE_OFFSET_BITS=64 -DCOGMTVM=0 -DLSB_FIRST=1 -m32 -DHAVE_CONFIG_H 
-I/home/rabbit/warren/oscogvm/build.linux32x86/squeak.cog.spur/build 
-I/home/rabbit/warren/oscogvm/build.linux32x86/squeak.cog.spur/build 
-I/home/rabbit/warren/oscogvm/platforms/unix/vm 
-I/home/rabbit/warren/oscogvm/platforms/Cross/vm 
-I/home/rabbit/warren/oscogvm/spursrc/vm 
-I/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin 
-m32 -DUSE_BOCHS_CONFIG_H=1 
-I/home/rabbit/warren/oscogvm/processors/IA32/linuxbochs 
-I/home/rabbit/warren/oscogvm/processors/IA32/bochs 
-I/home/rabbit/warren/oscogvm/processors/IA32/bochs/instrument/stubs -c 
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp 
-fPIC -DPIC -DPIC -o sqBochsX64Plugin.o
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:17:0: 
warning: "setjmp" redefined [enabled by default]
  # define setjmp(jb) _setjmp(jb)
  ^
In file included from 
/home/rabbit/warren/oscogvm/processors/IA32/bochs/gui/siminterface.h:1069:0,
                  from 
/home/rabbit/warren/oscogvm/processors/IA32/bochs/bochs.h:117,
                  from 
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:7:
/usr/include/setjmp.h:67:0: note: this is the location of the previous 
definition
  #define setjmp(env) _setjmp (env)
  ^
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp: 
In function 'int resetCPU(void*)':
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:68:47: 
error: 'struct bx_descriptor_t::<anonymous union>::<anonymous>' has no 
member named 'l'
    bx_cpu.sregs[BX_SEG_REG_CS].cache.u.segment.l     = 1; // 64-bit seg
                                                ^
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:74:47: 
error: 'struct bx_descriptor_t::<anonymous union>::<anonymous>' has no 
member named 'l'
    bx_cpu.sregs[BX_SEG_REG_DS].cache.u.segment.l     = 1; // 64-bit seg
                                                ^
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:80:47: 
error: 'struct bx_descriptor_t::<anonymous union>::<anonymous>' has no 
member named 'l'
    bx_cpu.sregs[BX_SEG_REG_SS].cache.u.segment.l     = 1; // 64-bit seg
                                                ^
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:101:10: 
error: 'class bx_cpu_c' has no member named 'efer'
    bx_cpu.efer.set_LMA(1); /* Hack.  The old version we use have 
doesn't support set_EFER */
           ^
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp: 
In function 'int disassembleForAtInSize(void*, ulong, void*, ulong)':
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:213:52: 
error: 'struct bx_descriptor_t::<anonymous union>::<anonymous>' has no 
member named 'l'
         anx64->sregs[BX_SEG_REG_CS].cache.u.segment.l,
                                                     ^
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp: 
At global scope:
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:324:39: 
error: no 'void bx_cpu_c::TLB_flushNonGlobal()' member function declared 
in class 'bx_cpu_c'
  void BX_CPU_C::TLB_flushNonGlobal(void)
                                        ^
make[1]: *** [sqBochsX64Plugin.lo] Error 1
make: *** [BochsX64Plugin.la] Error 2
rabbit at rabbithole:~/warren/oscogvm/build.linux32x86/squeak.cog.spur/build$ 
mv -f BochsX64Plugin.o BochsX64Plugin.lo
mv: cannot stat ‘BochsX64Plugin.o’: No such file or directory



More information about the Vm-dev mailing list