Index: chrome/nacl/nacl_helper_linux.cc |
=================================================================== |
--- chrome/nacl/nacl_helper_linux.cc (revision 98909) |
+++ chrome/nacl/nacl_helper_linux.cc (working copy) |
@@ -23,7 +23,6 @@ |
#include "content/common/main_function_params.h" |
#include "content/common/unix_domain_socket_posix.h" |
#include "ipc/ipc_switches.h" |
-#include "native_client/src/trusted/service_runtime/sel_memory.h" |
namespace { |
@@ -117,20 +116,33 @@ |
} // namespace |
-static const char kNaClHelperAtZero[] = "at-zero"; |
+static const void* g_nacl_reserved_space = NULL; |
+extern "C" __attribute__((visibility("default"))) |
+const void* nacl_helper_get_1G_address() { |
+ return g_nacl_reserved_space; |
+} |
-int main(int argc, char *argv[]) { |
+// nacl_helper_init does the real work of this module. It is invoked as |
+// a static constructor and never returns, preventing main() from the |
+// nacl_helper_bootstrap program from being called. |
+// |
+// NOTE This routine must not return. |
+extern "C" __attribute__((visibility("default"))) |
+void nacl_helper_init(int argc, char *argv[], |
+ const char *nacl_reserved_space) { |
CommandLine::Init(argc, argv); |
base::AtExitManager exit_manager; |
base::RandUint64(); // acquire /dev/urandom fd before sandbox is raised |
std::vector<int> empty; // for SendMsg() calls |
g_suid_sandbox_active = (NULL != getenv("SBX_D")); |
- |
- if (CommandLine::ForCurrentProcess()->HasSwitch(kNaClHelperAtZero)) { |
- g_nacl_prereserved_sandbox_addr = (void *) (uintptr_t) 0x10000; |
+ g_nacl_reserved_space = nacl_reserved_space; |
+ if (!nacl_reserved_space) { |
+ VLOG(1) << "nacl_reserved_space is NULL"; |
+ } else { |
+ VLOG(1) << "nacl_reserved_space is at " |
+ << (void *)nacl_reserved_space; |
} |
- |
// Send the zygote a message to let it know we are ready to help |
if (!UnixDomainSocket::SendMsg(kNaClZygoteDescriptor, |
kNaClHelperStartupAck, |