As for linux64ARMv8, I had to hack like this (The below is somewhat inconsistent but you'll get an idea) to get it produce a VM:

It looks like an issue of  missing compiler macros for the architecture.  The hack to sqUnixHeartbeat.c  is likely to be wrong... the asm code specified for __ARM_ARCHI_ISA_A64 does not  compile.

-----------------------------------------------
diff --git a/platforms/Cross/vm/sqAtomicOps.h b/platforms/Cross/vm/sqAtomicOps.h
index ff5d3fdd7..96abe3a22 100644
--- a/platforms/Cross/vm/sqAtomicOps.h
+++ b/platforms/Cross/vm/sqAtomicOps.h
@@ -203,7 +203,7 @@ AtomicGet(__int64 *target)
 
 # else /* TARGET_OS_IS_IPHONE elif x86 variants etc */
 
-#if defined(__arm__) && (defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__))
+#if defined(__arm__) && (defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__)) || 1
 /* tpr - this is code intended for the Raspberry Pi Raspbian OS
  * We'll experimentally trust in our MMU to keep 64bit accesses atomic */
 # define get64(variable) variable
diff --git a/platforms/unix/vm/sqUnixHeartbeat.c b/platforms/unix/vm/sqUnixHeartbeat.c
index e9e3545fa..a526b4515 100644
--- a/platforms/unix/vm/sqUnixHeartbeat.c
+++ b/platforms/unix/vm/sqUnixHeartbeat.c
@@ -183,7 +183,7 @@ ioHighResClock(void)
  : "rdx");
 #elif defined(__ARM_ARCH_ISA_A64) || defined(__arm64__) || defined(__aarch64__) || defined(ARM64)
     __asm__ __volatile__ ("MRS  X0, CNTVCT_EL0");
-#elif defined(__arm__) && (defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__))
+#elif defined(__arm__) && (defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__)) || 1
  /* tpr - do nothing for now; needs input from eliot to decide further */
  /* Tim, not sure I have input beyond:
  Is there a 64-bit clock on ARM?  If so, access it here :-)
diff --git a/spur64src/vm/cogit.c b/spur64src/vm/cogit.c
index d62b05f40..110685ac4 100644
--- a/spur64src/vm/cogit.c
+++ b/spur64src/vm/cogit.c
@@ -6,6 +6,8 @@
 # define SysV 1
 #endif
 
+#define __arm64__ 1
+
 #if defined(__arm64__) || defined(__aarch64__) || defined(__ARM_ARCH_ISA_A64) || defined(ARM64) || defined(ARMv8)
 
 # include "cogitARMv8.c"
diff --git a/src/plugins/SqueakFFIPrims/SqueakFFIPrims.c b/src/plugins/SqueakFFIPrims/SqueakFFIPrims.c
index 2878f9529..a0e5e0596 100644
--- a/src/plugins/SqueakFFIPrims/SqueakFFIPrims.c
+++ b/src/plugins/SqueakFFIPrims/SqueakFFIPrims.c
@@ -7,7 +7,7 @@
 # define ARM32FFIPlugin_exports SqueakFFIPrims_exports
 # include "ARM32FFIPlugin.c"
 
-#elif defined(__ARM_ARCH_ISA_A64) || defined(__aarch64__) || defined(__arm64__) || defined(ARM64) || defined(_M_ARM64)
+#elif defined(__ARM_ARCH_ISA_A64) || defined(__aarch64__) || defined(__arm64__) || defined(ARM64) || defined(_M_ARM64) || 1
 
 # define ARM64FFIPlugin_exports SqueakFFIPrims_exports
 # include "ARM64FFIPlugin.c"



On Wed, Oct 28, 2020 at 9:24 AM Yoshiki Ohshima <Yoshiki.Ohshima@acm.org> wrote:
Ok!

I did make a pull request but then merged it by myself.  Next thing for me to try is to build linux64ARMv8.

On Wed, Oct 28, 2020 at 8:47 AM Eliot Miranda <eliot.miranda@gmail.com> wrote:
 
Hi Yoshiki,

On Oct 28, 2020, at 8:34 AM, Yoshiki Ohshima <Yoshiki.Ohshima@acm.org> wrote:


Come to think of it, a better fix for a problem like this one:

 KeySym symbolic;
 int keyCode= x2sqKey(&evt->xkey, &symbolic);
 int ucs4= xkeysym2ucs4(symbolic);

was (obviously) to change the first line to:

 KeySym symbolic= 0;

rather than to try to store 0 into *symbolic on the callee side. (A professor of my college days once told us that "most bugs are related to uninitialized variables."  I should've known better.)  

I had exactly this bug in the win32 CameraPlugin the other day.  And it didn’t surface until shutting down the plugin on exiting the system.  C, what a love/hate relationship it engenders :-)

When I get  around to it, I'll make another change and this time make a pull request.

Or if you’d like I could invite you to become a committer and then you could avoid the pull request.



On Tue, Oct 27, 2020 at 11:43 AM Eliot Miranda <eliot.miranda@gmail.com> wrote:
 


On Tue, Oct 27, 2020 at 11:14 AM Yoshiki Ohshima <Yoshiki.Ohshima@acm.org> wrote:
 
Thanks!  Maybe I should not have sent a separate email to Eliot ^^;

Don't sweat it :-)  Fixes gratefully received :-)  Thanks *very* much for attending to the input issue. Much appreciated.

On Tue, Oct 27, 2020 at 10:46 AM Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com> wrote:
 
Ah too late, Eliot was faster, hit the pull request next time :)

Le mar. 27 oct. 2020 à 18:43, Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com> a écrit :
Hi Yoshiki,
what you could do is
1) revert the changes to sqPlatformSpecific.h (fseek, ftell) since we have a working workaround now
2) just create a pull request from the github web interface (that's rather easy)
It will be very easy for us to integrate (one click), and we'll keep your authorship.

Le mar. 27 oct. 2020 à 18:02, Yoshiki Ohshima <Yoshiki.Ohshima@acm.org> a écrit :
 
I have a branch on a clone on github:


It might be easier to pull from this?  Separately, I'll mail you sqUnixX11.c.

On Tue, Oct 27, 2020 at 9:58 AM Eliot Miranda <eliot.miranda@gmail.com> wrote:
 
Hi Yoshiki,

    on my Mac patch isn't smart enough to decode a git diff.  Can you just email me your platforms/unix/vm-display-X11/sqUnixX11.c and I'll integrate?  Thanks! 

On Tue, Oct 27, 2020 at 8:21 AM Yoshiki Ohshima <Yoshiki.Ohshima@acm.org> wrote:
 
The previous one was just a hack but I think I found the real problem. It was about the variable symbolic, that gets symbolic key code *when* it is needed has to be zero'ed  out when it is not needed.

The diff is attached... I'll a make pull request if that helps.

On Sat, Oct 24, 2020 at 5:32 PM Yoshiki Ohshima <Yoshiki.Ohshima@acm.org> wrote:
For the /build.linuxARMv6/squeak.cog.spur/build.debug  case, a hack I did was like this:

diff --git a/platforms/unix/vm/sqPlatformSpecific.h b/platforms/unix/vm/sqPlatformSpecific.h

index 268593673..bfb57257b 100644

--- a/platforms/unix/vm/sqPlatformSpecific.h

+++ b/platforms/unix/vm/sqPlatformSpecific.h

@@ -105,8 +105,8 @@ extern void sqFilenameFromString(char *uxName, sqInt stNameIndex, int sqNameLeng

 #undef sqFTruncate

 /* sqFTruncate should return 0 on success, ftruncate does also */

 #define        sqFTruncate(f,o) ftruncate(fileno(f), o)

-#define ftell(s) ftello(s)

-#define fseek(s,o,w) fseeko(s,o,w)

+// #define ftell(s) ftello(s)

+// #define fseek(s,o,w) fseeko(s,o,w)


 #if defined(__GNUC__)

 # if !defined(VM_LABEL)

diff --git a/spur64src/vm/cogit.c b/spur64src/vm/cogit.c

index d62b05f40..e1c14a021 100644

--- a/spur64src/vm/cogit.c

+++ b/spur64src/vm/cogit.c

@@ -6,6 +6,8 @@

 # define SysV 1

 #endif


+#define __arm64__

+

 #if defined(__arm64__) || defined(__aarch64__) || defined(__ARM_ARCH_ISA_A64) || defined(ARM64) || defined(ARMv8)


and this produced a runnable VM on Raspberry Pi4


On Sat, Oct 24, 2020 at 4:41 PM Yoshiki Ohshima <Yoshiki.Ohshima@acm.org> wrote:
And I tried a few more things by checking out the last release tag 202003021730 or try opensmalltalk-vm/build.linuxARMv6/squeak.cog.spur/build.debug but those attempts did not work. For the latter got this error:

In file included from /usr/include/features.h:424,

                 from /usr/include/pthread.h:21,

                 from /home/pi/opensmalltalk-vm/platforms/unix/vm/sqPlatformSpecific.h:62,

                 from /home/pi/opensmalltalk-vm/platforms/Cross/vm/sqAssert.h:16,

                 from /home/pi/opensmalltalk-vm/platforms/unix/vm/aio.c:35:

/usr/include/stdio.h:721:12: error: conflicting types for ‘fseeko’

 extern int __REDIRECT (fseeko,

            ^~~~~~~~~~

In file included from /home/pi/opensmalltalk-vm/platforms/Cross/vm/sqAssert.h:16,

                 from /home/pi/opensmalltalk-vm/platforms/unix/vm/aio.c:35:

/home/pi/opensmalltalk-vm/platforms/unix/vm/sqPlatformSpecific.h:109:22: note: previous declaration \

of ‘fseeko’ was here

 #define fseek(s,o,w) fseeko(s,o,w)

                      ^~~~~~




On Sat, Oct 24, 2020 at 1:59 PM Yoshiki Ohshima <Yoshiki.Ohshima@acm.org> wrote:
Hi Eliot,

For build.linux64ARMv8/squeak.cog.spur/build.debug, i get the following error. I think I followed the steps in the instructions, including running updateSCCSVersion and mvm. How can I fix it?

/home/pi/opensmalltalk-vm/spur64src/vm/cogit.c:22:3: error: #error As yet no Cogit implementation appears to exist for your platform.

 # error As yet no Cogit implementation appears to exist for your platform.

   ^~~~~

/home/pi/opensmalltalk-vm/spur64src/vm/cogit.c:23:3: error: #error Consider implementing it, starting by adding a subclass of CogAbstractInstruction.

 # error Consider implementing it, starting by adding a subclass of CogAbstractInstruction.

   ^~~~~

make[1]: *** [Makefile:207: cogit.o]


On Wed, Oct 21, 2020 at 10:21 AM Eliot Miranda <eliot.miranda@gmail.com> wrote:
 
Hi Yoshiki,

On Wed, Oct 21, 2020 at 10:14 AM Yoshiki Ohshima <Yoshiki.Ohshima@acm.org> wrote:
 
Hi,

I heard that people got a new problem in inputting Japanese text into Scratch 1.4 running on Raspberry Pi OS after, or around the version 2020-08-20. I would like to take a look at it but it might involve recompiling and generating  the VM with debugging info.  Last time I looked into it was years and years ago and I need to basically make a fresh start.

Is the process of making NuSqeauk VM For Raspberry Pi up to date and straightforward? Can people point me to the right point to start?

Making a Cog VM for Raspberry pi is straight-forward.  Clone opensmalltalk-vm.  cd to build.linux64ARMv8, read the HowToBuild, cd to build.linux64ARMv8/squeak.cog.spur/build.debug, or build.linux64ARMv8/squeak.stack.spur/build.debug, then run ./mvm

_,,,^..^,,,_
best, Eliot


--
-- Yoshiki



--
-- Yoshiki



--
-- Yoshiki



--
-- Yoshiki



--
_,,,^..^,,,_
best, Eliot


--
-- Yoshiki



--
-- Yoshiki



--
_,,,^..^,,,_
best, Eliot


--
-- Yoshiki



--
-- Yoshiki



--
-- Yoshiki