Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10618)

Unified Diff: chrome/nacl/nacl_helper_linux.cc

Issue 7655010: Reserve 1GB at the base of the address space of linux nacl_helper for Native Client module. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/nacl/nacl_helper_exports.txt ('k') | tools/ld_bfd/ld » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/nacl/nacl_helper_linux.cc
diff --git a/chrome/nacl/nacl_helper_linux.cc b/chrome/nacl/nacl_helper_linux.cc
index b943e2b24c6cf80ab6db7e7b332002a814fba09f..b53cf8dcf7288b2d15502fdb071c9cc195552160 100644
--- a/chrome/nacl/nacl_helper_linux.cc
+++ b/chrome/nacl/nacl_helper_linux.cc
@@ -116,14 +116,33 @@ void HandleForkRequest(const std::vector<int>& child_fds) {
} // namespace
-int main(int argc, char *argv[]) {
+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;
+}
+
+// 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"));
-
+ 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,
@@ -163,4 +182,5 @@ int main(int argc, char *argv[]) {
LOG(ERROR) << "*** send() to zygote failed";
}
}
+ CHECK(false); // This routine must not return
}
« no previous file with comments | « chrome/nacl/nacl_helper_exports.txt ('k') | tools/ld_bfd/ld » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698