<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Eliot, thank you for that orientation. I looked at your mac but had
    to go one more step. I realized I probably couldn't build both
    BochsIA32Plugin and BochsX64Plugin at the same time while sharing
    the processors/IA32 support code - it is compiled separately for
    IA32 and X64. So I added a processors/X64 directory, with a
    seaparate copy of Bochs for 64-bit emulation, built the libs with
    your conf.COG from mac, and built both Bochs plugins. I am attaching
    the link to BochsX64Plugin for 32-bit linux:
<a class="moz-txt-link-freetext" href="https://www.dropbox.com/s/g73feosuzlx45le/BochsX64Plugin.11-25-2015.tgz?dl=0">https://www.dropbox.com/s/g73feosuzlx45le/BochsX64Plugin.11-25-2015.tgz?dl=0</a><br>
    <br>
    Best,<br>
    Robert <br>
    <br>
    ... ^^<br>
    <br>
    <div class="moz-cite-prefix">On 10/24/2015 11:54 PM, Eliot Miranda
      wrote:<br>
    </div>
    <blockquote
      cite="mid:53553A42-96E2-469A-BE76-0ED2D1D9F15A@gmail.com"
      type="cite">
      <pre wrap=""> </pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      <div>Hi Rob,</div>
      <div id="AppleMailSignature"><br>
      </div>
      <div id="AppleMailSignature">    I've only tried to build it in
        Mac OS X.  I've also changed the build structure so one /can/
        build it either in 32 or 64 bits.  So look at the structure for
        building the support libraries under build.macos32x86 and
        replicate it under <span style="background-color: rgba(255, 255,
          255, 0);">build.linux32x86, write or change
          platforms/unix/plugins/</span>BochsX64Plugin/Makefile to pick
        up the libraries from (IIRC) <span style="background-color:
          rgba(255, 255, 255, 0);">build.linux32x86/bochsx64/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a}
          and you should be fine.  You'll need to
          run build.linux32x86/bochsx64/conf.COG which you'll copy
          from build.macos32x86/bochsx64/conf.COG</span><br>
        <br>
        <span style="background-color: rgba(255, 255, 255, 0);">_,,,^..^,,,_
          (phone)</span></div>
      <div><br>
        On Oct 24, 2015, at 5:59 PM, Robert Withers &lt;<a
          moz-do-not-send="true"
          href="mailto:robert.w.withers@gmail.com"><a class="moz-txt-link-abbreviated" href="mailto:robert.w.withers@gmail.com">robert.w.withers@gmail.com</a></a>&gt;
        wrote:<br>
        <br>
      </div>
      <blockquote type="cite">
        <div><span></span></div>
      </blockquote>
      <blockquote type="cite">
        <div>
          <meta content="text/html; charset=utf-8"
            http-equiv="Content-Type">
          Is it possible I need 64-bit headers/libraries on the 32-bit
          Ubuntu when compiling BochsX64Plugin? Here a line I am
          receiving an error for and it is for 64-bits:<br>
          <br>
          from sqBochsX64Plugin.cpp, line 68:<br>
                        
          bx_cpu.sregs[BX_SEG_REG_CS].cache.u.segment.l     = 1; //
          64-bit seg<br>
          <br>
          resulting in error, below.<br>
          <br>
          <br>
          <div class="moz-cite-prefix">On 10/23/2015 01:49 PM, Eliot
            Miranda wrote:<br>
          </div>
          <blockquote
cite="mid:CAC20JE3bRN0OiwvB4pZstFAXLZwE=WMLdJHyqaRXFrMmnjRQWw@mail.gmail.com"
            type="cite">
            <pre wrap=""> </pre>
            <br>
            <fieldset class="mimeAttachmentHeader"></fieldset>
            <br>
            <div dir="ltr"><br>
              <div class="gmail_extra"><br>
                <div class="gmail_quote">On Wed, Oct 21, 2015 at 7:26
                  PM, Robert Withers <span dir="ltr">&lt;<a
                      moz-do-not-send="true"
                      class="moz-txt-link-abbreviated"
                      href="mailto:robert.w.withers@gmail.com"><a class="moz-txt-link-abbreviated" href="mailto:robert.w.withers@gmail.com">robert.w.withers@gmail.com</a></a>&gt;</span>
                  wrote:<br>
                  <blockquote class="gmail_quote" style="margin:0 0 0
                    .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
                    I am not sure it is possible, even. Can this plugin
                    be build 32-bit; does it make any sense to do so?<br>
                  </blockquote>
                  <div><br>
                  </div>
                  <div>yes.  How on earth can the 64-bit Cogit be
                    created if this plugin can't be built in 32-bits? 
                    I'm using it on Mac OS X in 32-bits using a 32-bit
                    VM.</div>
                  <div> </div>
                  <blockquote class="gmail_quote" style="margin:0 0 0
                    .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br>
                    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.<br>
                    <br>
                    <br>
                    /home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:

                    In function 'int resetCPU(void*)':<br>
                    /home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:68:47:

                    error: 'struct bx_descriptor_t::&lt;anonymous
                    union&gt;::&lt;anonymous&gt;' has no member named
                    'l'<br>
                       bx_cpu.sregs[BX_SEG_REG_CS].cache.u.segment.l   
                     = 1; // 64-bit seg<br>
                    <br>
                    <br>
                    Thank you,<br>
                    Robert<br>
                    <br>
                    <br>
                    /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<br>
                    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<br>
                    mv -f BochsX64Plugin.o BochsX64Plugin.lo<br>
                    /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<br>
                    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<br>
                    /home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:17:0:

                    warning: "setjmp" redefined [enabled by default]<br>
                     # define setjmp(jb) _setjmp(jb)<br>
                     ^<br>
                    In file included from
/home/rabbit/warren/oscogvm/processors/IA32/bochs/gui/siminterface.h:1069:0,<br>
                                     from
                    /home/rabbit/warren/oscogvm/processors/IA32/bochs/bochs.h:117,<br>
                                     from
/home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:7:<br>
                    /usr/include/setjmp.h:67:0: note: this is the
                    location of the previous definition<br>
                     #define setjmp(env) _setjmp (env)<br>
                     ^<br>
                    /home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:

                    In function 'int resetCPU(void*)':<br>
                    /home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:68:47:

                    error: 'struct bx_descriptor_t::&lt;anonymous
                    union&gt;::&lt;anonymous&gt;' has no member named
                    'l'<br>
                       bx_cpu.sregs[BX_SEG_REG_CS].cache.u.segment.l   
                     = 1; // 64-bit seg<br>
                                                                   ^<br>
                    /home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:74:47:

                    error: 'struct bx_descriptor_t::&lt;anonymous
                    union&gt;::&lt;anonymous&gt;' has no member named
                    'l'<br>
                       bx_cpu.sregs[BX_SEG_REG_DS].cache.u.segment.l   
                     = 1; // 64-bit seg<br>
                                                                   ^<br>
                    /home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:80:47:

                    error: 'struct bx_descriptor_t::&lt;anonymous
                    union&gt;::&lt;anonymous&gt;' has no member named
                    'l'<br>
                       bx_cpu.sregs[BX_SEG_REG_SS].cache.u.segment.l   
                     = 1; // 64-bit seg<br>
                                                                   ^<br>
                    /home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:101:10:

                    error: 'class bx_cpu_c' has no member named 'efer'<br>
                       bx_cpu.efer.set_LMA(1); /* Hack.  The old version
                    we use have doesn't support set_EFER */<br>
                              ^<br>
                    /home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:

                    In function 'int disassembleForAtInSize(void*,
                    ulong, void*, ulong)':<br>
                    /home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:213:52:

                    error: 'struct bx_descriptor_t::&lt;anonymous
                    union&gt;::&lt;anonymous&gt;' has no member named
                    'l'<br>
                           
                    anx64-&gt;sregs[BX_SEG_REG_CS].cache.u.segment.l,<br>
                                                                       
                    ^<br>
                    /home/rabbit/warren/oscogvm/platforms/Cross/plugins/BochsX64Plugin/sqBochsX64Plugin.cpp:

                    At global scope:<br>
                    /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'<br>
                     void BX_CPU_C::TLB_flushNonGlobal(void)<br>
                                                           ^<br>
                    make[1]: *** [sqBochsX64Plugin.lo] Error 1<br>
                    make: *** [BochsX64Plugin.la] Error 2<br>
                    <a moz-do-not-send="true"
                      class="moz-txt-link-abbreviated"
href="mailto:rabbit@rabbithole:%7E/warren/oscogvm/build.linux32x86/squeak.cog.spur/build$">rabbit@rabbithole:~/warren/oscogvm/build.linux32x86/squeak.cog.spur/build$</a>
                    mv -f BochsX64Plugin.o BochsX64Plugin.lo<br>
                    mv: cannot stat ‘BochsX64Plugin.o’: No such file or
                    directory<br>
                    <br>
                  </blockquote>
                </div>
                <br>
                <br clear="all">
                <div><br>
                </div>
                -- <br>
                <div class="gmail_signature">
                  <div dir="ltr">
                    <div><span
                        style="font-size:small;border-collapse:separate">
                        <div>_,,,^..^,,,_<br>
                        </div>
                        <div>best, Eliot</div>
                      </span></div>
                  </div>
                </div>
              </div>
            </div>
          </blockquote>
          <br>
        </div>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>