GNU Smalltalk on ARM - Raspberry Pi

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
17 messages Options
Reply | Threaded
Open this post in threaded view
|

GNU Smalltalk on ARM - Raspberry Pi

Stephen Woolerton-2
Hi everyone,

Is GNU Smalltalk likely to run on a Raspberry Pi?

I started installing it just in case, in FreeBSD 10-Stable on a Raspberry Pi.

The configure stage is tripping up over libltdl with the following error:
checking for GNUTLS... yes
checking for lt_dlopen in -lltdl... no
configure: error: libltdl is required to compile GNU Smalltalk

The libltdl package is in fact installed...
[root@raspberry-pi ~]# ls /usr/local/lib/ | grep tdl
libltdl.a
libltdl.la
libltdl.so
libltdl.so.7
libltdl.so.7.3.0

If someone could help me get past this, much appreciated. The compiler on this OS is clang 3.4.

Thanks
Stephen
_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Sungjin Chun-2
Though not RPi, my trial on BeagleBone Black (on ArchLinux) works.
It seems that configure script only searches /usr.


On Sun, Jul 27, 2014 at 7:57 AM, Stephen Woolerton <[hidden email]>
wrote:

> Hi everyone,
>
> Is GNU Smalltalk likely to run on a Raspberry Pi?
>
> I started installing it just in case, in FreeBSD 10-Stable on a Raspberry
> Pi.
>
> The configure stage is tripping up over libltdl with the following error:
> checking for GNUTLS... yes
> checking for lt_dlopen in -lltdl... no
> configure: error: libltdl is required to compile GNU Smalltalk
>
> The libltdl package is in fact installed...
> [root@raspberry-pi ~]# ls /usr/local/lib/ | grep tdl
> libltdl.a
> libltdl.la
> libltdl.so
> libltdl.so.7
> libltdl.so.7.3.0
>
> If someone could help me get past this, much appreciated. The compiler on
> this OS is clang 3.4.
>
> Thanks
> Stephen
> _______________________________________________
> help-smalltalk mailing list
> [hidden email]
> https://lists.gnu.org/mailman/listinfo/help-smalltalk
>
>
_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Holger Freyther
In reply to this post by Stephen Woolerton-2
On Sun, Jul 27, 2014 at 10:57:03AM +1200, Stephen Woolerton wrote:
> Hi everyone,

Hi!

> I started installing it just in case, in FreeBSD 10-Stable on a Raspberry Pi.
>
> The configure stage is tripping up over libltdl with the following error:
> checking for GNUTLS... yes
> checking for lt_dlopen in -lltdl... no
> configure: error: libltdl is required to compile GNU Smalltalk

the nice thing about autoconf is that it creates a config.log. My guess
is that it doesn't look in /usr/local/lib itself. Did you set LDFLAGS and
point it to /usr/local/lib?

holger

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Holger Freyther
On Sun, Jul 27, 2014 at 08:20:25AM +0200, Holger Hans Peter Freyther wrote:

> the nice thing about autoconf is that it creates a config.log. My guess
> is that it doesn't look in /usr/local/lib itself. Did you set LDFLAGS and
> point it to /usr/local/lib?

I started a build on FreeBSD -CURRENT and yes you need something like

setenv LDFLAGS "-L/usr/local/lib -lexecinfo"
setenc CPPFLAGS "-I/usr/local/include"

(the need for CPPFLAGS is a bug, the need for -lexecinfo is a bug
as well. "backtrace" is new FreeBSD10 and we need to update our
autoconf tests)

You will need to install libffi, zip, flex, bison and libgmp as well
and you will need to use "gmake" instead of BSD make.

There are some test failures on FreeBSD as well but I didn't have the
time to check the source of them. Could you help with that?

holger




_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Stephen Woolerton-2
> I started a build on FreeBSD -CURRENT and yes you need something like
>
> setenv LDFLAGS "-L/usr/local/lib -lexecinfo"
> setenc CPPFLAGS "-I/usr/local/include"
>
> (the need for CPPFLAGS is a bug, the need for -lexecinfo is a bug
> as well. "backtrace" is new FreeBSD10 and we need to update our
> autoconf tests)
>
Exactly the information needed and I was able to build the software.

The "gmake install" process crashed about four times, then it suddenly worked and went through to completion. I haven't gone back yet to see whether this was a repeatable GST build issue, or something else.

> You will need to install libffi, zip, flex, bison and libgmp as well
Also gawk on FreeBSD was required
> and you will need to use "gmake" instead of BSD make.
Good point
> There are some test failures on FreeBSD as well but I didn't have the
> time to check the source of them. Could you help with that?

The result of running the test suite is below.
Yes for sure, I can check the source. I had a quick look at the test scripts and I have a couple of questions:-
1. How does one run a test file in isolation - is it possible? For instance what is the command to run just the tests in "intmath.st"?
2. With regard to the "intmath.st" test in the test output below, what is the "33" in "FAILED (testsuite.at:33)". The 33rd line? The 33rd test?

Thanks Holger for your assistance to get GST installed on the Pi. Much appreciated.

Stephen

-----
# uname -a
FreeBSD raspberry-pi 10.0-STABLE FreeBSD 10.0-STABLE #0 r268038: Tue Jul  1 04:29:43 UTC 2014     [hidden email]:/usr/obj/arm.armv6/usr/src/sys/RPI-B  arm
----

## -------------------------------- ##
## GNU Smalltalk 3.2.91 test suite. ##
## -------------------------------- ##

Regression tests.

  1: arrays.st                                       ok
  2: classes.st                                      ok
  3: blocks.st                                       ok
  4: sets.st                                         ok
  5: processes.st                                    ok
  6: exceptions.st                                   ok
  7: intmath.st                                      FAILED (testsuite.at:33)
  8: floatmath.st                                    FAILED (testsuite.at:34)
  9: dates.st                                        ok
 10: objects.st                                      ok
 11: strings.st                                      ok
 12: chars.st                                        ok
 13: delays.st                                       ok
 14: geometry.st                                     FAILED (testsuite.at:44)
 15: cobjects.st                                     ok
 16: compiler.st                                     ok
 17: fileext.st                                      ok
 18: mutate.st                                       ok
 19: getopt.st                                       ok
 20: quit.st                                         ok
 21: pools.st                                        ok
 22: shape.st                                        ok
 23: streams.st                                      ok
 24: xlat.st                                         ok

Other simple tests.

 25: ackermann.st                                    ok
 26: ary3.st                                         ok
 27: except.st                                       ok
 28: fibo.st                                         ok
 29: hash.st                                         ok
 30: hash2.st                                        ok
 31: heapsort.st                                     FAILED (testsuite.at:63)
 32: lists.st                                        ok
 33: lists1.st                                       ok
 34: lists2.st                                       ok
 35: matrix.st                                       ok
 36: methcall.st                                     ok
 37: nestedloop.st                                   ok
 38: objinst.st                                      ok
 39: prodcons.st                                     ok
 40: random-bench.st                                 FAILED (testsuite.at:72)
 41: sieve.st                                        ok
 42: strcat.st                                       ok
 43: stcompiler.st                                   ok

Basic packages.

 44: SUnit                                           ok
 45: Parser                                          ok

ANSI compliancy tests.

 46: ArrayANSITest                                   FAILED (testsuite.at:82)
 47: ArrayFactoryANSITest                            FAILED (testsuite.at:83)
 48: BagANSITest                                     FAILED (testsuite.at:84)
 49: BagFactoryANSITest                              FAILED (testsuite.at:85)
 50: BooleanANSITest                                 FAILED (testsuite.at:86)
 51: ByteArrayANSITest                               FAILED (testsuite.at:87)
 52: ByteArrayFactoryANSITest                        FAILED (testsuite.at:88)
 53: CharacterANSITest                               FAILED (testsuite.at:89)
 54: CharacterFactoryANSITest                        FAILED (testsuite.at:90)
 55: DateAndTimeANSITest                             FAILED (testsuite.at:91)
 56: DateAndTimeFactoryANSITest                      FAILED (testsuite.at:92)
 57: DictionaryANSITest                              FAILED (testsuite.at:93)
 58: DictionaryFactoryANSITest                       FAILED (testsuite.at:94)
 59: DurationANSITest                                FAILED (testsuite.at:95)
 60: DurationFactoryANSITest                         FAILED (testsuite.at:96)
 61: DyadicValuableANSITest                          FAILED (testsuite.at:97)
 62: ErrorANSITest                                   FAILED (testsuite.at:98)
 63: ErrorClassANSITest                              FAILED (testsuite.at:99)
 64: ExceptionANSITest                               FAILED (testsuite.at:100)
 65: ExceptionClassANSITest                          FAILED (testsuite.at:101)
 66: ExceptionSetANSITest                            FAILED (testsuite.at:102)
 67: FailedMessageANSITest                           FAILED (testsuite.at:103)
 68: FileStreamFactoryANSITest                       FAILED (testsuite.at:104)
 69: FloatANSITest                                   FAILED (testsuite.at:105)
 70: FloatCharacterizationANSITest                   FAILED (testsuite.at:106)
 71: FractionANSITest                                FAILED (testsuite.at:107)
 72: FractionFactoryANSITest                         FAILED (testsuite.at:108)
 73: IdentityDictionaryANSITest                      FAILED (testsuite.at:109)
 74: IdentityDictionaryFactoryANSITest               FAILED (testsuite.at:110)
 75: IntegerANSITest                                 FAILED (testsuite.at:111)
 76: IntervalANSITest                                FAILED (testsuite.at:112)
 77: IntervalFactoryANSITest                         FAILED (testsuite.at:113)
 78: MessageNotUnderstoodANSITest                    FAILED (testsuite.at:114)
 79: MessageNotUnderstoodSelectorANSITest            FAILED (testsuite.at:115)
 80: MonadicBlockANSITest                            FAILED (testsuite.at:116)
 81: NilANSITest                                     FAILED (testsuite.at:117)
 82: NiladicBlockANSITest                            FAILED (testsuite.at:118)
 83: NotificationANSITest                            FAILED (testsuite.at:119)
 84: NotificationClassANSITest                       FAILED (testsuite.at:120)
 85: ObjectANSITest                                  FAILED (testsuite.at:121)
 86: ObjectClassANSITest                             FAILED (testsuite.at:122)
 87: OrderedCollectionANSITest                       FAILED (testsuite.at:123)
 88: OrderedCollectionFactoryANSITest                FAILED (testsuite.at:124)
 89: ReadFileStreamANSITest                          FAILED (testsuite.at:125)
 90: ReadStreamANSITest                              FAILED (testsuite.at:126)
 91: ReadStreamFactoryANSITest                       FAILED (testsuite.at:127)
 92: ReadWriteStreamANSITest                         FAILED (testsuite.at:128)
 93: ReadWriteStreamFactoryANSITest                  FAILED (testsuite.at:129)
 94: ScaledDecimalANSITest                           FAILED (testsuite.at:130)
 95: SelectorANSITest                                FAILED (testsuite.at:131)
 96: SetANSITest                                     FAILED (testsuite.at:132)
 97: SetFactoryANSITest                              FAILED (testsuite.at:133)
 98: SortedCollectionANSITest                        FAILED (testsuite.at:134)
 99: SortedCollectionFactoryANSITest                 FAILED (testsuite.at:135)
100: StringANSITest                                  FAILED (testsuite.at:136)
101: StringFactoryANSITest                           FAILED (testsuite.at:137)
102: SymbolANSITest                                  FAILED (testsuite.at:138)
103: TranscriptANSITest                              FAILED (testsuite.at:139)
104: WarningANSITest                                 FAILED (testsuite.at:140)
105: WarningClassANSITest                            FAILED (testsuite.at:141)
106: WriteFileStreamANSITest                         FAILED (testsuite.at:142)
107: WriteStreamANSITest                             FAILED (testsuite.at:143)
108: WriteStreamFactoryANSITest                      FAILED (testsuite.at:144)
109: ZeroDivideANSITest                              FAILED (testsuite.at:145)
110: ZeroDivideFactoryANSITest                       FAILED (testsuite.at:146)

Other packages.

111: Announcements                                   ok
112: Complex                                         ok
113: Continuations                                   ok
114: DBD-MySQL                                       skipped (testsuite.at:152)
115: DBD-PostgreSQL                                  skipped (testsuite.at:153)
116: DBD-SQLite                                      skipped (testsuite.at:154)
117: DebugTools                                      ok
118: DhbNumericalMethods                             FAILED (testsuite.at:156)
119: Digest                                          ok
120: GDBM                                            skipped (testsuite.at:158)
121: Iconv                                           ok
122: Kernel-Tests                                    ok
123: Magritte                                        FAILED (testsuite.at:161)
124: Netlink                                         skipped (testsuite.at:162)
125: ROE                                             skipped (testsuite.at:163)
126: ObjectDumper                                    ok
127: SandstoneDb                                     ok
128: Seaside-Core                                    FAILED (testsuite.at:166)
129: Sockets                                         expected failure (testsuite.at:167)
130: Sport                                           ok
131: Swazoo                                          ok
132: XML-XMLParser                                   ok
133: XML-Expat                                       skipped (testsuite.at:171)
134: ZLib                                            ok

## ------------- ##
## Test results. ##
## ------------- ##

ERROR: 127 tests were run,
74 failed (1 expected failure).
7 tests were skipped.
## -------------------------- ##
## testsuite.log was created. ##
## -------------------------- ##

Please send `tests/testsuite.log' and all information you think might help:

   To: <[hidden email]>
   Subject: [GNU Smalltalk 3.2.91] testsuite: 7 8 14 31 40 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 118 123 128 failed

You may investigate any problem if you feel able to do so, in which
case the test suite provides a good starting point.  Its output may
be found below `tests/testsuite.dir'.

*** Error code 1

Stop.
make[1]: stopped in /usr/local/src/smalltalk-master/tests
*** Error code 1

Stop.
make: stopped in /usr/local/src/smalltalk-master

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Holger Freyther
On Sun, Jul 27, 2014 at 11:20:23PM +1200, Stephen Woolerton wrote:

> The "gmake install" process crashed about four times, then it suddenly worked and went through to completion. I haven't gone back yet to see whether this was a repeatable GST build issue, or something else.
>
> > You will need to install libffi, zip, flex, bison and libgmp as well
> Also gawk on FreeBSD was required
> > and you will need to use "gmake" instead of BSD make.
> Good point
> > There are some test failures on FreeBSD as well but I didn't have the
> > time to check the source of them. Could you help with that?
>
> The result of running the test suite is below.
> Yes for sure, I can check the source. I had a quick look at the test scripts and I have a couple of questions:-
> 1. How does one run a test file in isolation - is it possible? For instance what is the command to run just the tests in "intmath.st"?
> 2. With regard to the "intmath.st" test in the test output below, what is the "33" in "FAILED (testsuite.at:33)". The 33rd line? The 33rd test?

> Regression tests.
>
>   7: intmath.st                                      FAILED (testsuite.at:33)
>   8: floatmath.st                                    FAILED (testsuite.at:34)
>  31: heapsort.st                                     FAILED (testsuite.at:63)
> 118: DhbNumericalMethods                             FAILED (testsuite.at:156)
> 123: Magritte                                        FAILED (testsuite.at:161)

I had these failures on AMD64 and FreeBSD -CURRENT. I have to check if that
is either a Linux/FreeBSD or gcc/clang thing. It might still be a gmp vs.
no gmp issue.



>  14: geometry.st                                     FAILED (testsuite.at:44)
>  46: ArrayANSITest                                   FAILED (testsuite.at:82)
>  47: ArrayFactoryANSITest                            FAILED (testsuite.at:83)
>  48: BagANSITest                                     FAILED (testsuite.at:84)
>  49: BagFactoryANSITest                              FAILED (testsuite.at:85)
>  50: BooleanANSITest                                 FAILED (testsuite.at:86)
>  51: ByteArrayANSITest                               FAILED (testsuite.at:87)
>  52: ByteArrayFactoryANSITest                        FAILED (testsuite.at:88)
>  53: CharacterANSITest                               FAILED (testsuite.at:89)
>  54: CharacterFactoryANSITest                        FAILED (testsuite.at:90)
>  55: DateAndTimeANSITest                             FAILED (testsuite.at:91)
>  56: DateAndTimeFactoryANSITest                      FAILED (testsuite.at:92)
>  57: DictionaryANSITest                              FAILED (testsuite.at:93)
>  58: DictionaryFactoryANSITest                       FAILED (testsuite.at:94)
>  59: DurationANSITest                                FAILED (testsuite.at:95)
>  60: DurationFactoryANSITest                         FAILED (testsuite.at:96)
>  61: DyadicValuableANSITest                          FAILED (testsuite.at:97)
>  62: ErrorANSITest                                   FAILED (testsuite.at:98)
>  63: ErrorClassANSITest                              FAILED (testsuite.at:99)
>  64: ExceptionANSITest                               FAILED (testsuite.at:100)
>  65: ExceptionClassANSITest                          FAILED (testsuite.at:101)
>  66: ExceptionSetANSITest                            FAILED (testsuite.at:102)
>  67: FailedMessageANSITest                           FAILED (testsuite.at:103)
>  68: FileStreamFactoryANSITest                       FAILED (testsuite.at:104)
>  69: FloatANSITest                                   FAILED (testsuite.at:105)
>  70: FloatCharacterizationANSITest                   FAILED (testsuite.at:106)
>  71: FractionANSITest                                FAILED (testsuite.at:107)
>  72: FractionFactoryANSITest                         FAILED (testsuite.at:108)
>  73: IdentityDictionaryANSITest                      FAILED (testsuite.at:109)
>  74: IdentityDictionaryFactoryANSITest               FAILED (testsuite.at:110)
>  75: IntegerANSITest                                 FAILED (testsuite.at:111)
>  76: IntervalANSITest                                FAILED (testsuite.at:112)
>  77: IntervalFactoryANSITest                         FAILED (testsuite.at:113)
>  78: MessageNotUnderstoodANSITest                    FAILED (testsuite.at:114)
>  79: MessageNotUnderstoodSelectorANSITest            FAILED (testsuite.at:115)
>  80: MonadicBlockANSITest                            FAILED (testsuite.at:116)
>  81: NilANSITest                                     FAILED (testsuite.at:117)
>  82: NiladicBlockANSITest                            FAILED (testsuite.at:118)
>  83: NotificationANSITest                            FAILED (testsuite.at:119)
>  84: NotificationClassANSITest                       FAILED (testsuite.at:120)
>  85: ObjectANSITest                                  FAILED (testsuite.at:121)
>  86: ObjectClassANSITest                             FAILED (testsuite.at:122)
>  87: OrderedCollectionANSITest                       FAILED (testsuite.at:123)
>  88: OrderedCollectionFactoryANSITest                FAILED (testsuite.at:124)
>  89: ReadFileStreamANSITest                          FAILED (testsuite.at:125)
>  90: ReadStreamANSITest                              FAILED (testsuite.at:126)
>  91: ReadStreamFactoryANSITest                       FAILED (testsuite.at:127)
>  92: ReadWriteStreamANSITest                         FAILED (testsuite.at:128)
>  93: ReadWriteStreamFactoryANSITest                  FAILED (testsuite.at:129)
>  94: ScaledDecimalANSITest                           FAILED (testsuite.at:130)
>  95: SelectorANSITest                                FAILED (testsuite.at:131)
>  96: SetANSITest                                     FAILED (testsuite.at:132)
>  97: SetFactoryANSITest                              FAILED (testsuite.at:133)
>  98: SortedCollectionANSITest                        FAILED (testsuite.at:134)
>  99: SortedCollectionFactoryANSITest                 FAILED (testsuite.at:135)
> 100: StringANSITest                                  FAILED (testsuite.at:136)
> 101: StringFactoryANSITest                           FAILED (testsuite.at:137)
> 102: SymbolANSITest                                  FAILED (testsuite.at:138)
> 103: TranscriptANSITest                              FAILED (testsuite.at:139)
> 104: WarningANSITest                                 FAILED (testsuite.at:140)
> 105: WarningClassANSITest                            FAILED (testsuite.at:141)
> 106: WriteFileStreamANSITest                         FAILED (testsuite.at:142)
> 107: WriteStreamANSITest                             FAILED (testsuite.at:143)
> 108: WriteStreamFactoryANSITest                      FAILED (testsuite.at:144)
> 109: ZeroDivideANSITest                              FAILED (testsuite.at:145)
> 110: ZeroDivideFactoryANSITest                       FAILED (testsuite.at:146)

This is odd. This might be due ARM differences. GNU Smalltalk doesn't use a
read/write barrier but we mprotect pages and expect a SIGSEGV when these are
being read/written to. It might be that libsigsegv is behaving differently on
FreeBSD.

You could attempt to use "--disable-generational-gc" and if that doesn't make
it more stable you can head to libgst/oop.h and uncomment the define from the
below fragment. If it works better we have an idea where we can look at.

/* Define this flag to disable blacking of grey pages (that is, the
   entire oldspace is scanned to look for reachable newspace objects).
   This is also necessary to run valgrind on GNU Smalltalk.  */
/* #define NO_SIGSEGV_HANDLING */



_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Stephen Woolerton-2
If this helps, with regard to the the failure of all the ANSI tests... on running make check, I see:-
...
cd . && /usr/local/src/smalltalk-master/tests/gst -S --image=/usr/local/src/smalltalk-master/tests/gst.im AnsiLoad.st
Loading Ansi.st
ld-elf.so.1: assert failed: /usr/src/libexec/rtld-elf/rtld_lock.c:233
gmake[2]: *** [gst.im] Abort trap (core dumped)
gmake[2]: *** Deleting file `gst.im'

> This is odd. This might be due ARM differences. GNU Smalltalk doesn't use a
> read/write barrier but we mprotect pages and expect a SIGSEGV when these are
> being read/written to. It might be that libsigsegv is behaving differently on
> FreeBSD.
>
> You could attempt to use "--disable-generational-gc"
Have just used --disable-generational-gc and there was no change in the test suite. So now have uninstalled, cleaned, and am recompiling with the recommendation below. I have not used the --disable-generational-gc option in this next install.
Takes about an hour and a half round trip from compiling through to uninstalled, so yeah, theres time for a cup of coffee.
> and if that doesn't make
> it more stable you can head to libgst/oop.h and uncomment the define from the
> below fragment. If it works better we have an idea where we can look at.
>
> /* Define this flag to disable blacking of grey pages (that is, the
>   entire oldspace is scanned to look for reachable newspace objects).
>   This is also necessary to run valgrind on GNU Smalltalk.  */
> /* #define NO_SIGSEGV_HANDLING */
>

By the way, how does one check one of the test files outside of 'make check', .e.g to check intmath.st without running the whole test suite

Stephen

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Stephen Woolerton-2
In reply to this post by Holger Freyther
If this helps, with regard to the the failure of all the ANSI tests... on running make check, I see:-
...
cd . && /usr/local/src/smalltalk-master/tests/gst -S --image=/usr/local/src/smalltalk-master/tests/gst.im AnsiLoad.st
Loading Ansi.st
ld-elf.so.1: assert failed: /usr/src/libexec/rtld-elf/rtld_lock.c:233
gmake[2]: *** [gst.im] Abort trap (core dumped)
gmake[2]: *** Deleting file `gst.im'

> This is odd. This might be due ARM differences. GNU Smalltalk doesn't use a
> read/write barrier but we mprotect pages and expect a SIGSEGV when these are
> being read/written to. It might be that libsigsegv is behaving differently on
> FreeBSD.
>
> You could attempt to use "--disable-generational-gc"
Have just used --disable-generational-gc and there was no change in the test suite. So now have uninstalled, cleaned, and am recompiling with the recommendation below. I have not used the --disable-generational-gc option in this next install.
Takes about an hour and a half round trip from compiling through to uninstalled, so yeah, theres time for a cup of coffee.
> and if that doesn't make
> it more stable you can head to libgst/oop.h and uncomment the define from the
> below fragment. If it works better we have an idea where we can look at.
>
> /* Define this flag to disable blacking of grey pages (that is, the
>   entire oldspace is scanned to look for reachable newspace objects).
>   This is also necessary to run valgrind on GNU Smalltalk.  */
> /* #define NO_SIGSEGV_HANDLING */
>

By the way, how does one check one of the test files outside of 'make check', .e.g to check intmath.st without running the whole test suite

Stephen

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Sungjin Chun-2
In reply to this post by Holger Freyther
For my case, in BeagleBone Black(ARM7, as far as I know) on ArchLinux; the
make check reports only 1 unexpected
error (refer attached testsuite.log for details)


On Mon, Jul 28, 2014 at 12:28 AM, Holger Hans Peter Freyther <
[hidden email]> wrote:

> On Sun, Jul 27, 2014 at 11:20:23PM +1200, Stephen Woolerton wrote:
>
> > The "gmake install" process crashed about four times, then it suddenly
> worked and went through to completion. I haven't gone back yet to see
> whether this was a repeatable GST build issue, or something else.
> >
> > > You will need to install libffi, zip, flex, bison and libgmp as well
> > Also gawk on FreeBSD was required
> > > and you will need to use "gmake" instead of BSD make.
> > Good point
> > > There are some test failures on FreeBSD as well but I didn't have the
> > > time to check the source of them. Could you help with that?
> >
> > The result of running the test suite is below.
> > Yes for sure, I can check the source. I had a quick look at the test
> scripts and I have a couple of questions:-
> > 1. How does one run a test file in isolation - is it possible? For
> instance what is the command to run just the tests in "intmath.st"?
> > 2. With regard to the "intmath.st" test in the test output below, what
> is the "33" in "FAILED (testsuite.at:33)". The 33rd line? The 33rd test?
>
> > Regression tests.
> >
> >   7: intmath.st                                      FAILED (
> testsuite.at:33)
> >   8: floatmath.st                                    FAILED (
> testsuite.at:34)
> >  31: heapsort.st                                     FAILED (
> testsuite.at:63)
> > 118: DhbNumericalMethods                             FAILED (
> testsuite.at:156)
> > 123: Magritte                                        FAILED (
> testsuite.at:161)
>
> I had these failures on AMD64 and FreeBSD -CURRENT. I have to check if that
> is either a Linux/FreeBSD or gcc/clang thing. It might still be a gmp vs.
> no gmp issue.
>
>
>
> >  14: geometry.st                                     FAILED (
> testsuite.at:44)
> >  46: ArrayANSITest                                   FAILED (
> testsuite.at:82)
> >  47: ArrayFactoryANSITest                            FAILED (
> testsuite.at:83)
> >  48: BagANSITest                                     FAILED (
> testsuite.at:84)
> >  49: BagFactoryANSITest                              FAILED (
> testsuite.at:85)
> >  50: BooleanANSITest                                 FAILED (
> testsuite.at:86)
> >  51: ByteArrayANSITest                               FAILED (
> testsuite.at:87)
> >  52: ByteArrayFactoryANSITest                        FAILED (
> testsuite.at:88)
> >  53: CharacterANSITest                               FAILED (
> testsuite.at:89)
> >  54: CharacterFactoryANSITest                        FAILED (
> testsuite.at:90)
> >  55: DateAndTimeANSITest                             FAILED (
> testsuite.at:91)
> >  56: DateAndTimeFactoryANSITest                      FAILED (
> testsuite.at:92)
> >  57: DictionaryANSITest                              FAILED (
> testsuite.at:93)
> >  58: DictionaryFactoryANSITest                       FAILED (
> testsuite.at:94)
> >  59: DurationANSITest                                FAILED (
> testsuite.at:95)
> >  60: DurationFactoryANSITest                         FAILED (
> testsuite.at:96)
> >  61: DyadicValuableANSITest                          FAILED (
> testsuite.at:97)
> >  62: ErrorANSITest                                   FAILED (
> testsuite.at:98)
> >  63: ErrorClassANSITest                              FAILED (
> testsuite.at:99)
> >  64: ExceptionANSITest                               FAILED (
> testsuite.at:100)
> >  65: ExceptionClassANSITest                          FAILED (
> testsuite.at:101)
> >  66: ExceptionSetANSITest                            FAILED (
> testsuite.at:102)
> >  67: FailedMessageANSITest                           FAILED (
> testsuite.at:103)
> >  68: FileStreamFactoryANSITest                       FAILED (
> testsuite.at:104)
> >  69: FloatANSITest                                   FAILED (
> testsuite.at:105)
> >  70: FloatCharacterizationANSITest                   FAILED (
> testsuite.at:106)
> >  71: FractionANSITest                                FAILED (
> testsuite.at:107)
> >  72: FractionFactoryANSITest                         FAILED (
> testsuite.at:108)
> >  73: IdentityDictionaryANSITest                      FAILED (
> testsuite.at:109)
> >  74: IdentityDictionaryFactoryANSITest               FAILED (
> testsuite.at:110)
> >  75: IntegerANSITest                                 FAILED (
> testsuite.at:111)
> >  76: IntervalANSITest                                FAILED (
> testsuite.at:112)
> >  77: IntervalFactoryANSITest                         FAILED (
> testsuite.at:113)
> >  78: MessageNotUnderstoodANSITest                    FAILED (
> testsuite.at:114)
> >  79: MessageNotUnderstoodSelectorANSITest            FAILED (
> testsuite.at:115)
> >  80: MonadicBlockANSITest                            FAILED (
> testsuite.at:116)
> >  81: NilANSITest                                     FAILED (
> testsuite.at:117)
> >  82: NiladicBlockANSITest                            FAILED (
> testsuite.at:118)
> >  83: NotificationANSITest                            FAILED (
> testsuite.at:119)
> >  84: NotificationClassANSITest                       FAILED (
> testsuite.at:120)
> >  85: ObjectANSITest                                  FAILED (
> testsuite.at:121)
> >  86: ObjectClassANSITest                             FAILED (
> testsuite.at:122)
> >  87: OrderedCollectionANSITest                       FAILED (
> testsuite.at:123)
> >  88: OrderedCollectionFactoryANSITest                FAILED (
> testsuite.at:124)
> >  89: ReadFileStreamANSITest                          FAILED (
> testsuite.at:125)
> >  90: ReadStreamANSITest                              FAILED (
> testsuite.at:126)
> >  91: ReadStreamFactoryANSITest                       FAILED (
> testsuite.at:127)
> >  92: ReadWriteStreamANSITest                         FAILED (
> testsuite.at:128)
> >  93: ReadWriteStreamFactoryANSITest                  FAILED (
> testsuite.at:129)
> >  94: ScaledDecimalANSITest                           FAILED (
> testsuite.at:130)
> >  95: SelectorANSITest                                FAILED (
> testsuite.at:131)
> >  96: SetANSITest                                     FAILED (
> testsuite.at:132)
> >  97: SetFactoryANSITest                              FAILED (
> testsuite.at:133)
> >  98: SortedCollectionANSITest                        FAILED (
> testsuite.at:134)
> >  99: SortedCollectionFactoryANSITest                 FAILED (
> testsuite.at:135)
> > 100: StringANSITest                                  FAILED (
> testsuite.at:136)
> > 101: StringFactoryANSITest                           FAILED (
> testsuite.at:137)
> > 102: SymbolANSITest                                  FAILED (
> testsuite.at:138)
> > 103: TranscriptANSITest                              FAILED (
> testsuite.at:139)
> > 104: WarningANSITest                                 FAILED (
> testsuite.at:140)
> > 105: WarningClassANSITest                            FAILED (
> testsuite.at:141)
> > 106: WriteFileStreamANSITest                         FAILED (
> testsuite.at:142)
> > 107: WriteStreamANSITest                             FAILED (
> testsuite.at:143)
> > 108: WriteStreamFactoryANSITest                      FAILED (
> testsuite.at:144)
> > 109: ZeroDivideANSITest                              FAILED (
> testsuite.at:145)
> > 110: ZeroDivideFactoryANSITest                       FAILED (
> testsuite.at:146)
>
> This is odd. This might be due ARM differences. GNU Smalltalk doesn't use a
> read/write barrier but we mprotect pages and expect a SIGSEGV when these
> are
> being read/written to. It might be that libsigsegv is behaving differently
> on
> FreeBSD.
>
> You could attempt to use "--disable-generational-gc" and if that doesn't
> make
> it more stable you can head to libgst/oop.h and uncomment the define from
> the
> below fragment. If it works better we have an idea where we can look at.
>
> /* Define this flag to disable blacking of grey pages (that is, the
>    entire oldspace is scanned to look for reachable newspace objects).
>    This is also necessary to run valgrind on GNU Smalltalk.  */
> /* #define NO_SIGSEGV_HANDLING */
>
>
>
> _______________________________________________
> help-smalltalk mailing list
> [hidden email]
> https://lists.gnu.org/mailman/listinfo/help-smalltalk
>
>

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk

testsuite.log.gz (45K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Fwd: GNU Smalltalk on ARM - Raspberry Pi

Stephen Woolerton-2
In reply to this post by Stephen Woolerton-2
>
>> and if that doesn't make
>> it more stable you can head to libgst/oop.h and uncomment the define from the
>> below fragment. If it works better we have an idea where we can look at.
>>
>> /* Define this flag to disable blacking of grey pages (that is, the
>>   entire oldspace is scanned to look for reachable newspace objects).
>>   This is also necessary to run valgrind on GNU Smalltalk.  */
>> /* #define NO_SIGSEGV_HANDLING */
>>
Exactly the same pattern of tests failed as before, i.e. no benefit observed from making this change.

Stephen


_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Holger Freyther
In reply to this post by Stephen Woolerton-2
On Mon, Jul 28, 2014 at 11:07:23AM +1200, Stephen Woolerton wrote:

> Have just used --disable-generational-gc and there was no change in the test suite. So now have uninstalled, cleaned, and am recompiling with the recommendation below. I have not used the --disable-generational-gc option in this next install.
> Takes about an hour and a half round trip from compiling through to uninstalled, so yeah, theres time for a cup of coffee.

odd. You might want to get a backtrace then.

$ ulimit -c unlimited
$ run the command that failed
and if it crash
$ libtool --mode=execute gdb ./gst core.???? (replace ??? with something)

>
> By the way, how does one check one of the test files outside of 'make check', .e.g to check intmath.st without running the whole test suite

You can change to the test directory and execute the ./testsuite script
directly. It takes the "-v" for verbose argument and "-k NAME" to execute
a test by name.

holger

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Holger Freyther
On Wed, Jul 30, 2014 at 08:05:17PM +1200, Stephen Woolerton wrote:

Hi,


> Or a clang bug maybe... FreeBSD 10.0-STABLE on arm uses clang 3.4.
> I see clang 3.5 has a number of arm fixes.
>
> I'm just testing on a copy of FreeBSDx64 10.0-RELEASE also at the moment.
>
> I'm happy to file the bug reports, however I'd like to wait until I hear back from your testing also so that we know if this is a FreeBSD general issue, or an arm issue.
> Stephen

AMD64/FreeBSD-9.2 has fewer issues.



## -------------------------------- ##
## GNU Smalltalk 3.2.91 test suite. ##
## -------------------------------- ##

Regression tests.

  1: arrays.st                                       ok
  2: classes.st                                      ok
  3: blocks.st                                       ok
  4: sets.st                                         ok
  5: processes.st                                    ok
  6: exceptions.st                                   ok
  7: intmath.st                                      ok
  8: floatmath.st                                    ok
  9: dates.st                                        ok
 10: objects.st                                      ok
 11: strings.st                                      ok
 12: chars.st                                        ok
 13: delays.st                                       ok
 14: geometry.st                                     ok
 15: cobjects.st                                     ok
 16: compiler.st                                     ok
 17: fileext.st                                      ok
 18: mutate.st                                       ok
 19: getopt.st                                       ok
 20: quit.st                                         ok
 21: pools.st                                        ok
 22: shape.st                                        ok
 23: streams.st                                      ok
 24: xlat.st                                         ok

Other simple tests.

 25: ackermann.st                                    ok
 26: ary3.st                                         ok
 27: except.st                                       ok
 28: fibo.st                                         ok
 29: hash.st                                         ok
 30: hash2.st                                        ok
 31: heapsort.st                                     ok
 32: lists.st                                        ok
 33: lists1.st                                       ok
 34: lists2.st                                       ok
 35: matrix.st                                       ok
 36: methcall.st                                     ok
 37: nestedloop.st                                   ok
 38: objinst.st                                      ok
 39: prodcons.st                                     ok
 40: random-bench.st                                 ok
 41: sieve.st                                        ok
 42: strcat.st                                       ok
 43: stcompiler.st                                   ok

Basic packages.

 44: SUnit                                           ok
 45: Parser                                          ok

ANSI compliancy tests.

 46: ArrayANSITest                                   ok
 47: ArrayFactoryANSITest                            ok
 48: BagANSITest                                     ok
 49: BagFactoryANSITest                              ok
 50: BooleanANSITest                                 ok
 51: ByteArrayANSITest                               ok
 52: ByteArrayFactoryANSITest                        ok
 53: CharacterANSITest                               ok
 54: CharacterFactoryANSITest                        ok
 55: DateAndTimeANSITest                             ok
 56: DateAndTimeFactoryANSITest                      ok
 57: DictionaryANSITest                              ok
 58: DictionaryFactoryANSITest                       ok
 59: DurationANSITest                                ok
 60: DurationFactoryANSITest                         ok
 61: DyadicValuableANSITest                          ok
 62: ErrorANSITest                                   ok
 63: ErrorClassANSITest                              ok
 64: ExceptionANSITest                               ok
 65: ExceptionClassANSITest                          ok
 66: ExceptionSetANSITest                            ok
 67: FailedMessageANSITest                           ok
 68: FileStreamFactoryANSITest                       ok
 69: FloatANSITest                                   ok
 70: FloatCharacterizationANSITest                   ok
 71: FractionANSITest                                ok
 72: FractionFactoryANSITest                         ok
 73: IdentityDictionaryANSITest                      ok
 74: IdentityDictionaryFactoryANSITest               ok
 75: IntegerANSITest                                 ok
 76: IntervalANSITest                                ok
 77: IntervalFactoryANSITest                         ok
 78: MessageNotUnderstoodANSITest                    ok
 79: MessageNotUnderstoodSelectorANSITest            ok
 80: MonadicBlockANSITest                            ok
 81: NilANSITest                                     ok
 82: NiladicBlockANSITest                            ok
 83: NotificationANSITest                            ok
 84: NotificationClassANSITest                       ok
 85: ObjectANSITest                                  ok
 86: ObjectClassANSITest                             ok
 87: OrderedCollectionANSITest                       ok
 88: OrderedCollectionFactoryANSITest                ok
 89: ReadFileStreamANSITest                          ok
 90: ReadStreamANSITest                              ok
 91: ReadStreamFactoryANSITest                       ok
 92: ReadWriteStreamANSITest                         ok
 93: ReadWriteStreamFactoryANSITest                  ok
 94: ScaledDecimalANSITest                           ok
 95: SelectorANSITest                                ok
 96: SetANSITest                                     ok
 97: SetFactoryANSITest                              ok
 98: SortedCollectionANSITest                        ok
 99: SortedCollectionFactoryANSITest                 ok
100: StringANSITest                                  ok
101: StringFactoryANSITest                           ok
102: SymbolANSITest                                  ok
103: TranscriptANSITest                              ok
104: WarningANSITest                                 ok
105: WarningClassANSITest                            ok
106: WriteFileStreamANSITest                         ok
107: WriteStreamANSITest                             ok
108: WriteStreamFactoryANSITest                      ok
109: ZeroDivideANSITest                              ok
110: ZeroDivideFactoryANSITest                       ok

Other packages.

111: Announcements                                   ok
112: Complex                                         FAILED (testsuite.at:150)
113: Continuations                                   ok
114: DBD-MySQL                                       skipped (testsuite.at:152)
115: DBD-PostgreSQL                                  skipped (testsuite.at:153)
116: DBD-SQLite                                      ok
117: DebugTools                                      ok
118: DhbNumericalMethods                             ok
119: Digest                                          ok
120: GDBM                                            skipped (testsuite.at:158)
121: Iconv                                           FAILED (testsuite.at:159)
122: Kernel-Tests                                    ok
123: Magritte                                        ok
124: Netlink                                         skipped (testsuite.at:162)
125: ROE                                             ok
126: ObjectDumper                                    ok
127: SandstoneDb                                     ok
128: Seaside-Core                                    FAILED (testsuite.at:166)
129: Sockets                                         expected failure (testsuite.at:167)
130: Sport                                           ok
131: Swazoo                                          ok
132: XML-XMLParser                                   ok
133: XML-Expat                                       ok
134: ZLib                                            ok


Iconv/Seaside are the same failure. I thought I had fixed ICONV on FreeBSD
already but there might be another issue and the complex testcase is failing
with:

ComplexTest>>#testRaisedTo ....
FAILURE: Assertion failed

But in general this test result looks a lot better than the FreeBSD10/-CURRENT
one.


_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Stephen Woolerton-2
In reply to this post by Holger Freyther

>
> this is either a FreeBSD bug or some bad memory corruption in GST.
> Could you file a bug report in the FreeBSD bugzilla or ask on the
> ML? I intent to test with FreeBSD9.2, 10.0 and -CURRENT on AMD64
> to see if it has changed.
>

Testing on FreeBSD 10.0-RELEASE x64.
I found:-
  1. make check gives the same test results as when I ran it on the Pi, i.e. numbers tests failing, along with a few others
        2. as you can see below, the intmath.st test fails. However it does not crash with a core dump.

-------------------
# uname -a
FreeBSD freebsdvm 10.0-RELEASE-p7 FreeBSD 10.0-RELEASE-p7 #0: Tue Jul  8 06:37:44 UTC 2014     [hidden email]:/usr/obj/usr/src/sys/GENERIC  amd64

# clang -v
FreeBSD clang version 3.3 (tags/RELEASE_33/final 183502) 20130610
Target: x86_64-unknown-freebsd10.0
Thread model: posix

------------


# ./testsuite -v -k intmath.st
## -------------------------------- ##
## GNU Smalltalk 3.2.91 test suite. ##
## -------------------------------- ##
7. testsuite.at:33: testing intmath.st ...
{ (cd /usr/local/src/smalltalk-master/tests && env gst -I /usr/local/src/smalltalk-master/gst.im -r intmath.st 2>&1); echo exit 0 > retcode; } | tr -d '\r' | tee stdout; . ./retcode
./testsuite.at:33: { (cd $abs_srcdir && $TIMEOUT gst $image_path -r intmath.st 2>&1); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . ./retcode
--- expout 2014-07-30 20:31:34.000000000 +1200
+++ /usr/local/src/smalltalk-master/tests/testsuite.dir/at-groups/7/stdout 2014-07-30 20:31:34.000000000 +1200
@@ -96,10 +96,10 @@
 returned value is '1000000000000000000000000000000000000'
 
 Execution begins...
-returned value is 100
+returned value is Fraction new "<0>"
 
 Execution begins...
-returned value is '93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000'
+returned value is '-30098453190548698807792191512012496934244838496895475492827553771517401966495365770962452661228546691339753881600000000000000'
 
 Execution begins...
 returned value is true
@@ -174,12 +174,6 @@
 returned value is false
 
 Execution begins...
-returned value is false
-
-Execution begins...
-returned value is false
-
-Execution begins...
 returned value is true
 
 Execution begins...
@@ -189,10 +183,10 @@
 returned value is false
 
 Execution begins...
-returned value is true
+returned value is false
 
 Execution begins...
-returned value is true
+returned value is false
 
 Execution begins...
 returned value is false
@@ -204,6 +198,12 @@
 returned value is true
 
 Execution begins...
+returned value is true
+
+Execution begins...
+returned value is true
+
+Execution begins...
 true
 true
 returned value is true
@@ -236,6 +236,5 @@
 returned value is Fraction new "<0>"
 
 Execution begins...
-694
-694
-returned value is 314159
+ error: The program attempted to divide a number by zero
+returned value is nil
7. testsuite.at:33:  FAILED (testsuite.at:33)

## ------------- ##
## Test results. ##
## ------------- ##

ERROR: 1 test was run,
1 failed unexpectedly.
## -------------------------- ##
## testsuite.log was created. ##
## -------------------------- ##



_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Stephen Woolerton-2
In reply to this post by Holger Freyther
>
>> Or a clang bug maybe... FreeBSD 10.0-STABLE on arm uses clang 3.4.
>> I see clang 3.5 has a number of arm fixes.
>>
>> I'm just testing on a copy of FreeBSDx64 10.0-RELEASE also at the moment.
>>
>> I'm happy to file the bug reports, however I'd like to wait until I hear back from your testing also so that we know if this is a FreeBSD general issue, or an arm issue.
>
> how is this going? I didn't get around to try it on a beaglebone
> yet. Did you progress with this item?
>
> holger


Hi Holger… I didn’t hear back from you, and I had to proceed with something so I did the project in another language.

I do have the Pi still with FeeBSD on it, although it has been wiped and re-imaged since that post.

Stephen




_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Holger Freyther
On Thu, Nov 20, 2014 at 01:11:14PM +1300, Stephen Woolerton wrote:

Good Evening,

> Hi Holger… I didn’t hear back from you, and I had to proceed with something so I did the project in another language.
>
> I do have the Pi still with FeeBSD on it, although it has been wiped and re-imaged since that post.

I hope you give GNU Smalltalk another chance. I haven't much
progressed with GST on FreeBSD (leave alone the ARM port) but
I don't think it is something very big. My personal priority
is the Linux/ARM JIT thanks to Paulo's work.

kind regards
        holger

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Stephen Woolerton-2
>
> I hope you give GNU Smalltalk another chance. I haven't much
> progressed with GST on FreeBSD (leave alone the ARM port) but
> I don't think it is something very big. My personal priority
> is the Linux/ARM JIT thanks to Paulo's work.
>
> kind regards
> holger
For sure, I’ve been using GNU smalltalk for scripting bits and pieces for a long time - on Intel CPUs. This was the first attempt to use it on FreeBSD/ARM, and love to have some time one day, and go a bit deeper to see what the problem is.

Cheers
Stephen
_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: GNU Smalltalk on ARM - Raspberry Pi

Stephen Woolerton-2
In reply to this post by Holger Freyther
>
> how is this going? I didn't get around to try it on a beaglebone
> yet. Did you progress with this item?
>
> holger

I’ve just installed GNU Smalltalk on FreeBSD 10.1 on a Raspberry Pi. I used latest sources as at 26-Jan-2015.

All tests passed except for the FloatD and FloatE classes which failed a test. The test that failed is in floatmath.st, line 275...
        self assert: (self coerce: p reciprocal negated) negative.
where p is as follows;
   p := 1 bitShift: 1 + self precision - self emin.


To assist with resolving the bug, here are some examples from a GST session on the Pi:-

st > | p |
st> p := 1 bitShift: 1 + FloatD precision - FloatD emin.
404804506614621236704990693437834614099113299528284236713802716054860679135990693783920767402874248990374155728633623822779617474771586953734026799881477019843034848553132722728933815484186432682479535356945490137124014966849385397236206711298319112681620113024717539104666829230461005064372655017292012526615415482186989568

st> FloatD coerce: p reciprocal negated.
0.0
st> FloatD coerce: 1000 reciprocal  negated.
-0.001
st> FloatD coerce: 0.0  negated.
-0.0

I also found the number region around which the bug shows up...
st> FloatD coerce: 4048045066146212367049906934378346140991132995282842367138027160548606791359906937839207674028742489903741557286336238227796174747715869537340267998814770198430348485531327227289338154841864326824795353569454901371240149668493853972362067112983191126816201130247175391046668292304610050643726550172920125266 reciprocal * -1.
-2.4703282292062327d-307
st> FloatD coerce: 404804506614621236704990693437834614099113299528284236713802716054860679135990693783920767402874248990374155728633623822779617474771586953734026799881477019843034848553132722728933815484186432682479535356945490137124014966849385397236206711298319112681620113024717539104666829230461005064372655017292012526615 reciprocal * -1.
0.0
_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk