| // Copyright 2014 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 <iostream> |
| |
| #include "base/files/file.h" |
| #include "base/files/file_path.h" |
| #include "base/logging.h" |
| #include "mojo/edk/embedder/embedder.h" |
| #include "mojo/edk/embedder/simple_platform_support.h" |
| #include "mojo/nacl/sfi/nacl_bindings/monacl_sel_main.h" |
| #include "native_client/src/public/nacl_desc.h" |
| |
| NaClDesc* OpenFile(const char* filename) { |
| base::FilePath path(filename); |
| base::File file(path, base::File::FLAG_OPEN | base::File::FLAG_READ); |
| if (!file.IsValid()) { |
| perror(filename); |
| exit(1); |
| } |
| return NaClDescCreateWithFilePathMetadata(file.TakePlatformFile(), ""); |
| } |
| |
| int main(int argc, char* argv[]) { |
| if (argc < 3) { |
| std::cout << "Usage: " << argv[0] << " irt.nexe app.nexe [args for app]" << |
| std::endl; |
| return 1; |
| } |
| |
| const char* irt_file = argv[1]; |
| const char* nexe_file = argv[2]; |
| |
| NaClDesc* irt_desc = OpenFile(irt_file); |
| NaClDesc* nexe_desc = OpenFile(nexe_file); |
| |
| mojo::embedder::Init(mojo::embedder::CreateSimplePlatformSupport()); |
| |
| int exit_code = mojo::LaunchNaCl(nexe_desc, irt_desc, argc - 2, argv + 2, |
| MOJO_HANDLE_INVALID); |
| |
| // Exits the process cleanly, does not return. |
| mojo::NaClExit(exit_code); |
| NOTREACHED(); |
| return 1; |
| } |