64 bit Windows support for Native Client

60 views
Skip to first unread message

David S

unread,
Mar 3, 2009, 1:22:10 PM3/3/09
to Native Client Discuss
All,

We've recently had several issues relating to using Native Client on
64 bit versions of Windows. The short answer is that, although we are
currently investigating several directions for support, Native Client
does not run on at least some 64 bit versions of Windows due to some
operating system APIs being removed by Microsoft. So currently 64 bit
versions of Windows XP, Server 2003, Vista, Server 2008, and Windows 7
most likely do not work with Native Client. The 32 bit versions of
all of these Windows releases are believed to work, as are 32 and 64
bit versions of both Linux and OSX.

An upcoming release adds explicit checking for supported operating
system versions, and will require for the near term that Windows be a
32 bit version of XP or later. Windows 2000 support was dropped for
unrelated reasons.

But more importantly, we are actively working on support for 64 bit
versions of Windows, and expect to have something you can use shortly
after the end of the security contest.

Cheers,

David

For the curious: Native Client uses the x86 local descriptor table
(LDT) for parts of control and data integrity enforcement. Setting up
the local descriptor table register (LDTR) and adding or modifying
entries in the LDT are done through APIs provided by the underlying
operating system. The really curious should feel free to read the
Intel or AMD manuals on the subject. On Windows we use the
NtSetLdtEntries and NtSetInformationProcess APIs where available. On
some early versions of XP64 these APIs appeared to function correctly,
as on 32 bit versions, but on all subsequent versions they are
disabled. Further investigation appears to show that support for
restoring the LDTR after context switches has been removed in at least
some 64 bit versions. This issue is not related to the use of
segmentation in 64 bit mode, as Native Client binaries run as 32 bit
applications. The LDT and segment selectors are usable in x86-64
compatibility mode, as is demonstrated by 64 bit versions of Linux and
OSX.
Reply all
Reply to author
Forward
0 new messages