about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBen Blum <bblum@andrew.cmu.edu>2012-08-16 18:06:06 -0400
committerBen Blum <bblum@andrew.cmu.edu>2012-08-16 21:07:55 -0400
commita076c287de55bd69328fbf542bf769ca20a12ab4 (patch)
tree2f27022168625e67edd07ffd981bd7579ee5ab94
parentf188d92dfe824ce45d7128940b8ac60741975cfb (diff)
downloadrust-a076c287de55bd69328fbf542bf769ca20a12ab4.tar.gz
rust-a076c287de55bd69328fbf542bf769ca20a12ab4.zip
Fix issue-506.rs by adding a void-returning stub in the runtime (close #2957)
-rw-r--r--src/rt/rust_builtin.cpp2
-rw-r--r--src/rt/rustrt.def.in1
-rw-r--r--src/test/run-pass/issue-506.rs6
3 files changed, 5 insertions, 4 deletions
diff --git a/src/rt/rust_builtin.cpp b/src/rt/rust_builtin.cpp
index 465eb6efe38..8fd8bdc7c45 100644
--- a/src/rt/rust_builtin.cpp
+++ b/src/rt/rust_builtin.cpp
@@ -797,6 +797,8 @@ rust_dbg_call(dbg_callback cb, void *data) {
     return cb(data);
 }
 
+extern "C" CDECL void rust_dbg_do_nothing() { }
+
 extern "C" CDECL void
 rust_dbg_breakpoint() {
     BREAKPOINT_AWESOME;
diff --git a/src/rt/rustrt.def.in b/src/rt/rustrt.def.in
index 9710d4acb27..5995d95b331 100644
--- a/src/rt/rustrt.def.in
+++ b/src/rt/rustrt.def.in
@@ -170,6 +170,7 @@ rust_dbg_lock_unlock
 rust_dbg_lock_wait
 rust_dbg_lock_signal
 rust_dbg_call
+rust_dbg_do_nothing
 rust_dbg_breakpoint
 rust_osmain_sched_id
 rust_compare_and_swap_ptr
diff --git a/src/test/run-pass/issue-506.rs b/src/test/run-pass/issue-506.rs
index 5d0ceefeb3c..45a8ef26794 100644
--- a/src/test/run-pass/issue-506.rs
+++ b/src/test/run-pass/issue-506.rs
@@ -1,4 +1,3 @@
-// xfail-test
 /*
   A reduced test case for Issue #506, provided by Rob Arnold.
 
@@ -10,10 +9,9 @@ import task;
 
 #[abi = "cdecl"]
 extern mod rustrt {
-    fn get_task_id() -> libc::intptr_t;
+    fn rust_dbg_do_nothing();
 }
 
 fn main() {
-    let f: fn() -> libc::intptr_t = rustrt::get_task_id;
-    task::spawn(unsafe { unsafe::reinterpret_cast(f) });
+    task::spawn(rustrt::rust_dbg_do_nothing);
 }