[Vm-dev] Re: New Cog VMs available

Eliot Miranda eliot.miranda at gmail.com
Sun Jun 21 01:33:06 UTC 2015

Hi All,

On Sat, Jun 20, 2015 at 6:26 PM, Eliot Miranda <eliot.miranda at gmail.com>

> ... at http://www.mirandabanda.org/files/Cog/VM/VM.r3386
> CogVM binaries as per VMMaker.oscog-eem.1370/r3386
> Add the ARMv5/ARMv6 Cog Spur JIT VM!

It's very satisfying to release a JIT for a new (for Cog) ISA.  Thanks to
Lars Wassermann and Tim Rowledge for lots of hard work on the JIT, which I
participated in too.  And thanks to Doug McPherson for lots of work in
other parts of the ARM build.  This is great.

The main caveat is that this has only been tested on Raspberry Pi running
Raspbian.  We're interested to hear of experience with other ARM linux

All is not perfect.  I've been able to update a Spur image completely and
run almost all tests.  But currently there's a segfault coming from SSL.
Anyone who's got expertise with SSL and ARM is encouraged to take a look.
Here's the current stack trace for the segfault:

Program received signal SIGILL, Illegal instruction.
0xb5fd4600 in ?? () from /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0
(gdb) where
#0  0xb5fd4600 in ?? () from /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0
#1  0xb5fd0fe4 in OPENSSL_cpuid_setup ()
   from /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0
#2  0xb6fe8254 in ?? () from /lib/ld-linux-armhf.so.3
#3  0x0029db18 in ?? ()
#4  0x0029db18 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) call printStackCallStackOf (framePointer)
0xbefab924 I SqueakSSL>initialize 0x619df8: a(n) SqueakSSL
0xbefab93c M SqueakSSL class(Behavior)>new 0x1a3f6c0: a(n) SqueakSSL class
0xbefab954 M SqueakSSLTest>setUp 0x18a9f08: a(n) SqueakSSLTest
0xbefab96c M [] in SqueakSSLTest(TestCase)>runCase 0x18a9f08: a(n)
0xbefab988 M BlockClosure>on:do: 0x44d640: a(n) BlockClosure
0xbefab9b0 M [] in SqueakSSLTest(TestCase)>timeout:after: 0x18a9f08: a(n)
0xbefab9d0 M BlockClosure>ensure: 0x44d6e0: a(n) BlockClosure
0xbefab9f8 M SqueakSSLTest(TestCase)>timeout:after: 0x18a9f08: a(n)
0xbefaba18 M [] in SqueakSSLTest(TestCase)>runCase 0x18a9f08: a(n)
0xbefaba38 M BlockClosure>ensure: 0x44d810: a(n) BlockClosure
0xbefaba54 M SqueakSSLTest(TestCase)>runCase 0x18a9f08: a(n) SqueakSSLTest

> Add explicit read barriers to primitives which access an argument as the
> receiver (i.e. the mirror primitives).  Don't check if the actual receiver
> is
> used.  Simplify failure where appropriate cuz the primitives will be
> retried.
> Add -fwrapv to all linux gcc builds (to insist on 2's complement
> arithmetic)
> and add makeallclean, making makeall do the dirty build.
> Provide a -exitonwarn command line switch for the Mac and Unix VMs to
> allow for
> CI testing of asserts.
> Unix: restore the SCCS revision after the version number in -version
> output.
> Spur:
> Remember to count shrink requests
> Cogit:
> Fix bug in rewriting compiler primitives on module unload, etc.  The old
> code
> didn't change the assignment to the primitiveFunctionPointer, which is
> needed
> for correct management of failing primitive calls on Spur.  Simplify the
> post
> compile hook to eliminate the label parameter; this is local to the Cogit.
> ARM Cogit:
> Use out-of-line literals for compactness.
> --
> best,
> Eliot

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20150620/458415fd/attachment.htm

More information about the Vm-dev mailing list