OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/nacl/browser/nacl_process_host.h" | 5 #include "components/nacl/browser/nacl_process_host.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
589 | 589 |
590 bool NaClProcessHost::LaunchSelLdr() { | 590 bool NaClProcessHost::LaunchSelLdr() { |
591 std::string channel_id = process_->GetHost()->CreateChannel(); | 591 std::string channel_id = process_->GetHost()->CreateChannel(); |
592 if (channel_id.empty()) { | 592 if (channel_id.empty()) { |
593 SendErrorToRenderer("CreateChannel() failed"); | 593 SendErrorToRenderer("CreateChannel() failed"); |
594 return false; | 594 return false; |
595 } | 595 } |
596 | 596 |
597 // Build command line for nacl. | 597 // Build command line for nacl. |
598 | 598 |
599 #if defined(OS_MACOSX) | 599 #if defined(OS_LINUX) |
600 // The Native Client process needs to be able to allocate a 1GB contiguous | |
601 // region to use as the client environment's virtual address space. ASLR | |
602 // (PIE) interferes with this by making it possible that no gap large enough | |
603 // to accomodate this request will exist in the child process' address | |
604 // space. Disable PIE for NaCl processes. See http://crbug.com/90221 and | |
605 // http://code.google.com/p/nativeclient/issues/detail?id=2043. | |
606 int flags = ChildProcessHost::CHILD_NO_PIE; | |
607 #elif defined(OS_LINUX) | |
608 int flags = ChildProcessHost::CHILD_ALLOW_SELF; | 600 int flags = ChildProcessHost::CHILD_ALLOW_SELF; |
609 #else | 601 #else |
610 int flags = ChildProcessHost::CHILD_NORMAL; | 602 int flags = ChildProcessHost::CHILD_NORMAL; |
611 #endif | 603 #endif |
612 | 604 |
613 base::FilePath exe_path = ChildProcessHost::GetChildPath(flags); | 605 base::FilePath exe_path = ChildProcessHost::GetChildPath(flags); |
614 if (exe_path.empty()) | 606 if (exe_path.empty()) |
615 return false; | 607 return false; |
616 | 608 |
617 #if defined(OS_WIN) | 609 #if defined(OS_WIN) |
(...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1385 NaClStartDebugExceptionHandlerThread( | 1377 NaClStartDebugExceptionHandlerThread( |
1386 process.Pass(), info, base::ThreadTaskRunnerHandle::Get(), | 1378 process.Pass(), info, base::ThreadTaskRunnerHandle::Get(), |
1387 base::Bind(&NaClProcessHost::OnDebugExceptionHandlerLaunchedByBroker, | 1379 base::Bind(&NaClProcessHost::OnDebugExceptionHandlerLaunchedByBroker, |
1388 weak_factory_.GetWeakPtr())); | 1380 weak_factory_.GetWeakPtr())); |
1389 return true; | 1381 return true; |
1390 } | 1382 } |
1391 } | 1383 } |
1392 #endif | 1384 #endif |
1393 | 1385 |
1394 } // namespace nacl | 1386 } // namespace nacl |
OLD | NEW |