Hello again,

I keep running into basic things being broken on the ARM architecture;
yesterday I found out that even division doesn't work correctly. It won't
be hard to fix, but it made me yearn for the ability to run the standard
Forth test suite against the ARM build.

I noticed that the test/ directory is attempting something similar and
arguably more ambitious by running a test suite against actual boards,
which is certainly very useful, but I'm after something much more basic.
Any 32-bit arm based target should do to test the core words.

So I made another attempt at getting the linux-arm build running. I still
haven't figured out how to make it run under bare QEMU (I'm lost in the
various details that are required to emulate a Raspbery PI, I will get
there eventually), but I did get it running in an emulated 32-bit ARM
container. The Makefile on my branch shows the details how
https://github.com/mkobetic/amforth/blob/unor4/appl/linux-arm/Makefile#L36-L57

With that I was able to attempt the core test suite run. Running `make
test` currently ends on this sour note:
---
...
> TESTING BOOLEANS: INVERT AND OR XOR
 ok
>
 ok
> T{ 0 0 AND -> 0 }T
 ok
> T{ 0 1 AND -> 0 }T
 ok
> T{ 1 0 AND -> 0 }T
 ok
> T{ 1 1 AND -> 1 }T
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
Segmentation fault
---
This is to be expected because variables are still broken on ARM and they
are critical for the test framework to function. Frankly I'm surprised it
managed to get that far.

But anyway, what gets me excited is how easy it is to run the tests and
collect results with the linux-arm build. With a bit of programming I can
process the results and output pass/fail stats and make the job pass or
fail based on that. From there it shouldn't be hard to get a fully
automated CI run on any platform that supports 32-bit ARM (or at least some
sort of emulation). It looks like Github Actions should accommodate that
reasonably easily. I'm not sure how hard it would be to get the same for
RISC-V, but I'd be surprised if there weren't any (free) options for that
somewhere. A Raspbery PI style linux-riscv build could probably be very
similar to the linux-arm one.

Anyway, please let me know if I'm rediscovering the wheel here. Any hints
or pointers to previous efforts in this direction would be very welcome.

Cheers,

Martin

_______________________________________________
Amforth-devel mailing list for http://amforth.sf.net/
[email protected]
https://lists.sourceforge.net/lists/listinfo/amforth-devel

Reply via email to