summaryrefslogtreecommitdiff
path: root/tools/standalone_miri/main.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2019-08-04 17:23:12 +0800
committerJohn Hodge <tpg@ucc.asn.au>2019-08-04 17:23:12 +0800
commit6c6fd331a7bb415abd723f29cb9014dac25d50cf (patch)
tree2351ca2820c575c846b9160bfe8fd62ecbac47b6 /tools/standalone_miri/main.cpp
parente88271aae2b141124f45879664afc3d839f4194e (diff)
downloadmrust-6c6fd331a7bb415abd723f29cb9014dac25d50cf.tar.gz
Standalone MIRI - Properly tagged FFI pointers
Diffstat (limited to 'tools/standalone_miri/main.cpp')
-rw-r--r--tools/standalone_miri/main.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/tools/standalone_miri/main.cpp b/tools/standalone_miri/main.cpp
index ad5a978e..4da6c7fc 100644
--- a/tools/standalone_miri/main.cpp
+++ b/tools/standalone_miri/main.cpp
@@ -74,12 +74,13 @@ int main(int argc, const char* argv[])
// Create argc/argv based on input arguments
auto argv_alloc = Allocation::new_alloc((1 + opts.args.size()) * POINTER_SIZE, "argv");
argv_alloc->write_usize(0 * POINTER_SIZE, Allocation::PTR_BASE);
- argv_alloc->relocations.push_back({ 0 * POINTER_SIZE, RelocationPtr::new_ffi(FFIPointer::new_const_bytes(opts.infile.c_str(), opts.infile.size() + 1)) });
+ argv_alloc->relocations.push_back({ 0 * POINTER_SIZE, RelocationPtr::new_ffi(FFIPointer::new_const_bytes("argv0", opts.infile.c_str(), opts.infile.size() + 1)) });
for(size_t i = 0; i < opts.args.size(); i ++)
{
argv_alloc->write_usize((1 + i) * POINTER_SIZE, Allocation::PTR_BASE);
- argv_alloc->relocations.push_back({ (1 + i) * POINTER_SIZE, RelocationPtr::new_ffi(FFIPointer::new_const_bytes(opts.args[0], ::std::strlen(opts.args[0]) + 1)) });
+ argv_alloc->relocations.push_back({ (1 + i) * POINTER_SIZE, RelocationPtr::new_ffi(FFIPointer::new_const_bytes("argv", opts.args[i], ::std::strlen(opts.args[i]) + 1)) });
}
+ LOG_DEBUG("argv_alloc = " << *argv_alloc);
// Construct argc/argv values
auto val_argc = Value::new_isize(1 + opts.args.size());
@@ -90,7 +91,7 @@ int main(int argc, const char* argv[])
try
{
InterpreterThread root_thread(tree);
-
+
::std::vector<Value> args;
args.push_back(::std::move(val_argc));
args.push_back(::std::move(val_argv));