Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(900)

Unified Diff: mojo/nacl/nonsfi/README.md

Issue 1398213003: Refactored Non-SFI and SFI NaCl into separate directories. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/nacl/nonsfi/BUILD.gn ('k') | mojo/nacl/nonsfi/irt_mojo_nonsfi.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/nacl/nonsfi/README.md
diff --git a/mojo/nacl/nonsfi/README.md b/mojo/nacl/nonsfi/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..8fec9f82bda79752b285d251d4efcff4cf3ce01c
--- /dev/null
+++ b/mojo/nacl/nonsfi/README.md
@@ -0,0 +1,63 @@
+About
+=====
+
+This directory contains the necessary components to run Non-SFI NaCl
+nexes (native executables) from within Mojo.
+
+Using
+=====
+
+The Non-SFI NaCl and accompanying tests should be built by default for Linux.
+The boolean indicating if they are built is "mojo_use_nacl_nonsfi", defined
+inside the BUILD files.
+
+Build Mojo (all following commands assume you are in the root of the mojo
+repository):
+
+```
+$ ./mojo/tools/mojob.py gn
+$ ./mojo/tools/mojob.py build
+```
+
+Doing this build step will automatically create a pexe of unit tests, at
+`./out/Debug/newlib_pnacl/monacl_test.pexe`. To translate a pexe into a
+non-SFI nexe:
+
+```
+$ ./native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-translate \
+./out/Debug/newlib_pnacl/FOOBAR.pexe -o FOOBAR.nexe -arch x86-32-nonsfi
+```
+
+Now, you should have the fully translated nexe (called
+"FOOBAR.nexe"). You can run the nexe through the monacl shell
+(a minimal, "nexe-only" shell, which loads the nexe ELF file -- see
+ monacl_shell_nonsfi.cc):
+
+```
+$ ./out/Debug/clang_x86/monacl_shell_nonsfi FOOBAR.nexe
+```
+
+This monacl_shell_nonsfi is the easiest way to run nexes in Mojo -- however, it
+is not the only way. Usually, applications are launched through the
+"mojo_shell", but some additional information is required to know how to handle
+this content (i.e., how does the mojo_shell know it is dealing with a nonsfi
+nexe?).
+
+The BUILD.gn files in Mojo automatically make this pexe, translate it to a
+nexe, and prepend a line ("#!mojo mojo:nacl_content_handler_nonsfi") to the
+front of the file, at which point it is also runnable through the mojo_shell.
+These files, which start with this "#!" line, are ".mojo" files. The nexes can
+be run like this:
+
+```
+$ ./out/Debug/mojo_shell --enable-multiprocess out/Debug/FOOBAR.mojo
+```
+
+TODO
+====
+
+* Enable content handling of Non-SFI pexes, which should be translated and run
+as nexes.
+ * Use subzero (a NaCl project to improve translation speed) for pexe
+ translation.
+ * Enable caching of translated pexes.
« no previous file with comments | « mojo/nacl/nonsfi/BUILD.gn ('k') | mojo/nacl/nonsfi/irt_mojo_nonsfi.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698