about summary refs log tree commit diff
path: root/src/rt/rust.cpp
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2011-04-18 16:18:55 +0200
committerMarijn Haverbeke <marijnh@gmail.com>2011-04-18 16:21:49 +0200
commitf6be25a8705b40c2c5127b52479485d904d38b64 (patch)
treedc569bf01f47e01e70c8820a7a6341ac229154dd /src/rt/rust.cpp
parentf12998e5d7a4409d2bf748a671c345a79085213e (diff)
downloadrust-f6be25a8705b40c2c5127b52479485d904d38b64.tar.gz
rust-f6be25a8705b40c2c5127b52479485d904d38b64.zip
Update foregoing patches to leave rust_crate alone.
Apparently it can't live in the main binary, since on non-Linux
platforms, dynamics libs won't find symbols in the binary. This
removes the crate_map pointer from rust_crate again, and instead
passes it as an extra argument to rust_start. Rustboot doesn't pass
this argument, but supposedly that's okay as long as we don't actually
use it on that platform.
Diffstat (limited to 'src/rt/rust.cpp')
-rw-r--r--src/rt/rust.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/rt/rust.cpp b/src/rt/rust.cpp
index 013705f26c2..6a42173636e 100644
--- a/src/rt/rust.cpp
+++ b/src/rt/rust.cpp
@@ -78,9 +78,11 @@ command_line_args : public dom_owned<command_line_args>
 
 extern "C" CDECL int
 rust_start(uintptr_t main_fn, rust_crate const *crate, int argc,
-           char **argv) {
+           char **argv, void* crate_map) {
 
-    crate->update_log_settings(getenv("RUST_LOG"));
+    // Only when we're on rustc is the last argument passed
+    if (!crate->get_image_base())
+        update_log_settings(crate_map, getenv("RUST_LOG"));
     rust_srv *srv = new rust_srv();
     rust_kernel *kernel = new rust_kernel(srv);
     kernel->start();