Non-SFI Mode: Add nonsfi_loader and plumbing to test it

The initial reason for adding this is for testing the PNaCl
toolchain's support for producing Non-SFI nexes (which so far has only
been tested in Chromium).  In the longer term, Chromium's Non-SFI Mode
will switch to using this code from the NaCl repo.

 * src/nonsfi/loader: Add an ELF loader for Non-SFI nexes.

 * src/nonsfi/irt: Move pnacl/support/unsandboxed_irt.c here, and add
   plumbing so that it can be used without it defining main().

    * Use "__typeof__" rather than "typeof" to avoid a
      -Wlanguage-extension-token warning from Clang (on Mac).

Note that this introduces the "src/nonsfi" directory.  This is for
system code that doesn't run in an SFI sandbox and that may or may not
run in an outer sandbox (such as a seccomp-bpf sandbox), and so may or
may not be trusted.

"src/nonsfi" is primarily for implementing the Non-SFI NaCl ABI, but
it's also for implementing the "unsandboxed PNaCl" use case, which
uses the same IRT interface implementation.

Build/test plumbing:

 * Add "nonsfi_nacl=1" option to Scons for testing Non-SFI Mode.  This
   is similar to the existing "pnacl_unsandboxed=1" option.

   Add a suffix to the scons-out subdir name, to allow files to
   coexist without rebuilding.  This is required for testing on the
   ARM hardware bots, so that the synced tarball can contain nexes of
   both types.

 * Enable tests on the PNaCl bots.  buildbot_pnacl.py covers x86,
   while the older buildbot_pnacl.sh covers ARM.

BUG=https://code.google.com/p/nativeclient/issues/detail?id=3809
TEST="run_hello_world_test_irt nacl_nonsfi=1", run on bots
R=bradnelson@google.com, jvoung@chromium.org

Review URL: https://codereview.chromium.org/269703002

git-svn-id: svn://svn.chromium.org/native_client/trunk/src/native_client/site_scons@13132 fcba33aa-ac0c-11dd-b9e7-8d5594d729c2
1 file changed
tree: 2706055d07af79b0fe47253748f2978fb76098ee
  1. site_tools/
  2. gyp_extract.py
  3. site_init.py
  4. usage_log.py