| Index: components/nacl/loader/nacl_listener.cc
|
| diff --git a/components/nacl/loader/nacl_listener.cc b/components/nacl/loader/nacl_listener.cc
|
| index 0d29487e86ea676d0326f0214a269637e47fd346..db28dbf19ae38ad8e4225bda713c1c5fb208bf0f 100644
|
| --- a/components/nacl/loader/nacl_listener.cc
|
| +++ b/components/nacl/loader/nacl_listener.cc
|
| @@ -270,17 +270,14 @@ void NaClListener::OnStart(const nacl::NaClStartParams& params) {
|
| NaClChromeMainSetUrandomFd(urandom_fd);
|
| #endif
|
|
|
| - NaClChromeMainInit();
|
| - struct NaClChromeMainArgs *args = NaClChromeMainArgsCreate();
|
| - if (args == NULL) {
|
| - LOG(ERROR) << "NaClChromeMainArgsCreate() failed";
|
| - return;
|
| - }
|
| -
|
| - struct NaClApp *nap = NaClAppCreate();
|
| - if (nap == NULL) {
|
| - LOG(ERROR) << "NaClAppCreate() failed";
|
| - return;
|
| + struct NaClApp* nap = NULL;
|
| + if (!uses_nonsfi_mode_) {
|
| + NaClChromeMainInit();
|
| + nap = NaClAppCreate();
|
| + if (nap == NULL) {
|
| + LOG(ERROR) << "NaClAppCreate() failed";
|
| + return;
|
| + }
|
| }
|
|
|
| IPC::ChannelHandle browser_handle;
|
| @@ -353,6 +350,25 @@ void NaClListener::OnStart(const nacl::NaClStartParams& params) {
|
|
|
| std::vector<nacl::FileDescriptor> handles = params.handles;
|
|
|
| +#if defined(OS_LINUX)
|
| + if (uses_nonsfi_mode_) {
|
| + if (params.uses_irt) {
|
| + LOG(ERROR) << "IRT must not be used for non-SFI NaCl.";
|
| + return;
|
| + }
|
| + CHECK(handles.size() == 1);
|
| + int imc_bootstrap_handle = nacl::ToNativeHandle(handles[0]);
|
| + nacl::nonsfi::MainStart(imc_bootstrap_handle);
|
| + return;
|
| + }
|
| +#endif
|
| +
|
| + struct NaClChromeMainArgs* args = NaClChromeMainArgsCreate();
|
| + if (args == NULL) {
|
| + LOG(ERROR) << "NaClChromeMainArgsCreate() failed";
|
| + return;
|
| + }
|
| +
|
| #if defined(OS_LINUX) || defined(OS_MACOSX)
|
| args->number_of_cores = number_of_cores_;
|
| args->create_memory_object_func = CreateMemoryObject;
|
| @@ -424,12 +440,6 @@ void NaClListener::OnStart(const nacl::NaClStartParams& params) {
|
| args->prereserved_sandbox_size = prereserved_sandbox_size_;
|
| #endif
|
|
|
| -#if defined(OS_LINUX)
|
| - if (uses_nonsfi_mode_) {
|
| - nacl::nonsfi::MainStart(args->imc_bootstrap_handle);
|
| - return;
|
| - }
|
| -#endif
|
| NaClChromeMainStartApp(nap, args);
|
| NOTREACHED();
|
| }
|
|
|