diff options
| author | Graydon Hoare <graydon@mozilla.com> | 2011-02-22 16:37:01 -0800 |
|---|---|---|
| committer | Graydon Hoare <graydon@mozilla.com> | 2011-02-22 16:37:27 -0800 |
| commit | af4d6ae76b05d4edb9d7074b971600a447c9c9a4 (patch) | |
| tree | 20b65962db38b2c2cddd0eea9ba7563584fec0d0 /src/rt/rust.cpp | |
| parent | 01c2761769ab93682afec9101b4896a7253b5251 (diff) | |
| download | rust-af4d6ae76b05d4edb9d7074b971600a447c9c9a4.tar.gz rust-af4d6ae76b05d4edb9d7074b971600a447c9c9a4.zip | |
Add ABI tagging to crates, adjust rustc output and runtime stack-frame setup so access to argv works.
Diffstat (limited to 'src/rt/rust.cpp')
| -rw-r--r-- | src/rt/rust.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/rt/rust.cpp b/src/rt/rust.cpp index 0ea167a4a8c..46fcb22ea0b 100644 --- a/src/rt/rust.cpp +++ b/src/rt/rust.cpp @@ -78,7 +78,7 @@ 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) { rust_srv *srv = new rust_srv(); rust_kernel *kernel = new rust_kernel(srv); @@ -87,7 +87,8 @@ rust_start(uintptr_t main_fn, rust_crate const *crate, int argc, rust_dom *dom = handle->referent(); command_line_args *args = new (dom) command_line_args(dom, argc, argv); - dom->log(rust_log::DOM, "startup: %d args", args->argc); + dom->log(rust_log::DOM, "startup: %d args in 0x%" PRIxPTR, + args->argc, (uintptr_t)args->args); for (int i = 0; i < args->argc; i++) { dom->log(rust_log::DOM, "startup: arg[%d] = '%s'", i, args->argv[i]); @@ -99,7 +100,8 @@ rust_start(uintptr_t main_fn, rust_crate const *crate, int argc, uintptr_t main_args[4] = {0, 0, 0, (uintptr_t)args->args}; dom->root_task->start(crate->get_exit_task_glue(), - main_fn, (uintptr_t)&main_args, sizeof(main_args)); + crate->abi_tag, main_fn, + (uintptr_t)&main_args, sizeof(main_args)); int ret = dom->start_main_loop(); delete args; kernel->destroy_domain(dom); |
