1 {{+bindTo:partials.standard_nacl_article}}
3 <section id=
"design-documents">
4 <h1 id=
"design-documents">Design Documents
</h1>
5 <p>This is a list of design documents for Native Client. This list
6 generally covers designs that were implemented. It does not cover
8 <p>Dynamic loading and linking:
</p>
10 <li><a class=
"reference external" href=
"http://code.google.com/p/nativeclient/wiki/DynamicLoadingOptions">Dynamic loading: Options for supporting dynamic loading, and how they interact with dynamic libraries
</a> (
2010)
</li>
12 <p>Handling faults (hardware exceptions) in untrusted code:
</p>
13 <ul class=
"small-gap">
14 <li><a class=
"reference external" href=
"https://docs.google.com/a/chromium.org/document/d/1T2KQitbOBz_ALQtr4ONcZcSNCIKNla3DI7t6dMcx5AE/edit">NaCl untrusted fault handling: guide to the implementation
</a></li>
16 <p>Sandbox security on Windows:
</p>
17 <ul class=
"small-gap">
18 <li><a class=
"reference external" href=
"https://src.chromium.org/viewvc/native_client/trunk/src/native_client/documentation/windows_ntdll_patch.txt?revision=HEAD">Native Client
’s NTDLL patch on x86-
64 Windows
</a> (
2012)
</li>
20 <p>Debugging using GDB:
</p>
21 <ul class=
"small-gap">
22 <li><a class=
"reference external" href=
"https://docs.google.com/a/chromium.org/document/d/1OtVmgJFC7X7aa57DnyiL4V10vAVax_vcRJp4Mw86lIU/edit">Providing a GDB debug stub integrated into native_client
</a> (
2012). This was the main design doc for NaCl
’s GDB debug stub.
</li>
23 <li><a class=
"reference external" href=
"https://docs.google.com/a/google.com/document/d/1tu2FEA4EKhBH669iUgRZBDBcEd6jzNQ-0OVn9JI4_qk/edit">Native Client Support for Debugging, Crash Reporting and Hardware Exception Handling
– high level design
</a> (Jan
2012)
</li>
24 <li><a class=
"reference external" href=
"https://docs.google.com/a/chromium.org/document/d/19qkl5R4lg-AIDf648Ml-gLRq6eZscjvvdMNWkVu2wLk/edit">NaCl: three kinds of crash handling
</a> (
2012). This is an earlier document. It contains notes on trusted vs. untrusted crash handling, vs. GDB support.
</li>
27 <ul class=
"small-gap">
28 <li><a class=
"reference external" href=
"https://docs.google.com/a/google.com/document/d/1xUlWyXnaRnIUBnmKdOBkgq2O9OqfvaRBLaz82pNdKt0/edit">Stability of the PNaCl bitcode ABI
</a> (
2013). This is an overview of ABI stability issues and the features of LLVM IR that PNaCl is removing.
</li>
29 <li><a class=
"reference external" href=
"https://docs.google.com/a/chromium.org/document/d/1HvZJVwS9KeTc0jUvoQjbLapRbStHk3mZ0rPDUHNN96Y/edit">Incrementally simplifying the PNaCl bitcode format
</a> (
2013)
</li>
30 <li><a class=
"reference external" href=
"https://docs.google.com/a/chromium.org/document/d/1Bub1bV_IIDZDhdld-zTULE2Sv0KNbOXk33KOW8o0aR4/edit">SJLJ EH: C++ exception handling in PNaCl using setjmp()+longjmp()
</a> (
2013)
</li>
32 <p>Security hardening:
</p>
33 <ul class=
"small-gap">
34 <li><a class=
"reference external" href=
"https://docs.google.com/a/chromium.org/document/d/1eskaI4353XdsJQFJLRnZzb_YIESQx4gNRzf31dqXVG8/edit">Hiding PNaCl
’s x86-
64 sandbox base address
</a> (
2013). This was part of the security hardening we did for enabling PNaCl on the open web.
</li>
37 <ul class=
"small-gap">
38 <li><a class=
"reference external" href=
"https://code.google.com/p/nativeclient/issues/attachmentText?id=2275&aid=22750018000&name=native-client-mips-0.4.txt">Design for the NaCl MIPS sandbox
</a> (
2012)
</li>
41 <ul class=
"small-gap">
42 <li><a class=
"reference external" href=
"https://docs.google.com/a/chromium.org/document/d/1lycqf4yPMC84011yvuyO_50V8c8COQ8dAe5rNvbeB9o/edit">Removing NaCl
’s dependency on Chromium
</a> (
2012)
</li>
45 <ul class=
"small-gap">
46 <li><a class=
"reference external" href=
"https://docs.google.com/a/chromium.org/document/d/1jHoLo9I3CCS1_-4KlIq1OiEMv9cmMuXES2Z9JVpmPtY/edit">Semi-automated NaCl DEPS rolls: Updates to nacl_revision field in Chromium
’s DEPS file
</a> (
2013). This is a description of current practice rather than a design doc.
</li>
48 <h2 id=
"obsolete-not-implemented">Obsolete (not implemented)
</h2>
49 <p>PNaCl multi-threading support: The following proposals do not reflect what was implemented in PNaCl in the end. They are listed here for historical reference.
</p>
50 <ul class=
"small-gap">
51 <li><a class=
"reference external" href=
"https://docs.google.com/a/chromium.org/document/d/1HcRiGOaaPLk7pQrGnjXceoM7Px3IwOjjwdiVvJVQNr4/edit">Multi-threading support for a first release of PNaCl
</a> (
2013): Proposal for mutex_v2/cond_v2 IRT interfaces.
</li>
52 <li><a class=
"reference external" href=
"https://docs.google.com/a/chromium.org/document/d/1HcRiGOaaPLk7pQrGnjXceoM7Px3IwOjjwdiVvJVQNr4/edit">Explicit vs. implicit atomicity guarantees in PNaCl
</a> (
2013): Discussion about how to handle atomic memory operations.
</li>
56 {{/partials.standard_nacl_article}}