| // Copyright 2015 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include <fcntl.h> | 
 | #include <iostream> | 
 |  | 
 | #include "mojo/edk/embedder/embedder.h" | 
 | #include "mojo/edk/embedder/simple_platform_support.h" | 
 | #include "mojo/nacl/irt_mojo_nonsfi.h" | 
 | #include "native_client/src/public/irt_core.h" | 
 | #include "native_client/src/public/nonsfi/elf_loader.h" | 
 |  | 
 | int main(int argc, char** argv, char** environ) { | 
 |   nacl_irt_nonsfi_allow_dev_interfaces(); | 
 |   if (argc < 2) { | 
 |     std::cerr << "Usage: " << argv[0] <<  " <executable> <args...>\n"; | 
 |     return 1; | 
 |   } | 
 |   const char* nexe_filename = argv[1]; | 
 |   int fd = open(nexe_filename, O_RDONLY); | 
 |   if (fd < 0) { | 
 |     std::cerr << "Failed to open " << nexe_filename << ": " << | 
 |               strerror(errno) << "\n"; | 
 |     return 1; | 
 |   } | 
 |   uintptr_t entry = NaClLoadElfFile(fd); | 
 |  | 
 |   // TODO(vtl): Use make_unique when C++14 is available. | 
 |   mojo::embedder::Init(std::unique_ptr<mojo::embedder::PlatformSupport>( | 
 |       new mojo::embedder::SimplePlatformSupport())); | 
 |  | 
 |   return nacl_irt_nonsfi_entry(argc - 1, argv + 1, environ, | 
 |                                reinterpret_cast<nacl_entry_func_t>(entry), | 
 |                                nacl::MojoIrtNonsfiQuery); | 
 | } |