On Sun, Sep 5, 2021 at 2:22 AM Reinhard Kotucha <reinhard.kotucha@web.de> wrote:
Hi,
on a 64 bit Windows machine os.uname() erroneously returns

  machine       i686

On the same machine I get under Linux

  machine       x86_64

with both, x86_64-linux and i386-linux binaries.  Thus I assume that
the keyword 'machine' refers to the hardware, not to how the binaries
were compiled (32 vs. 64 bit).

The complete output of

  for k,v in pairs(os.uname()) do
    print(k,v)
  end

is

  release       build 9200
  nodename      R804
  version       6.02
  machine       i686
  sysname       Windows 8

 

#ifdef _WIN32
#  define _UTSNAME_LENGTH 65

/* Structure describing the system and machine.  */
struct utsname {
    char sysname[_UTSNAME_LENGTH];
    char nodename[_UTSNAME_LENGTH];
    char release[_UTSNAME_LENGTH];
    char version[_UTSNAME_LENGTH];
    char machine[_UTSNAME_LENGTH];
};

/*
 * Get name and information about current kernel.
 */
static int uname(struct utsname *uts)
:

case WinNT:
            sprintf(uts->machine, "i%d86", sysinfo.wProcessorLevel);
            break;

I guess that wProcessorLevel gives 6 in your case.

--
luigi