about summary refs log tree commit diff
path: root/src/rt/rust_scheduler.cpp
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-11-21 18:52:12 -0800
committerBrian Anderson <banderson@mozilla.com>2011-11-22 18:02:10 -0800
commit6bdf347418d04e48ef0fbbe0f4b2e940e9a24782 (patch)
tree9e3977e8dbf8d31415edba20a38904d7dfcf0247 /src/rt/rust_scheduler.cpp
parenta69c5617f02ff80dd7d39949004b386f9808b7d6 (diff)
downloadrust-6bdf347418d04e48ef0fbbe0f4b2e940e9a24782.tar.gz
rust-6bdf347418d04e48ef0fbbe0f4b2e940e9a24782.zip
rt: Make __morestack (without unwinding) work on 32-bit linux
Diffstat (limited to 'src/rt/rust_scheduler.cpp')
-rw-r--r--src/rt/rust_scheduler.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/rt/rust_scheduler.cpp b/src/rt/rust_scheduler.cpp
index 26ceb3bccb3..d12f37107a4 100644
--- a/src/rt/rust_scheduler.cpp
+++ b/src/rt/rust_scheduler.cpp
@@ -367,10 +367,14 @@ rust_scheduler::init_tls() {
     tls_initialized = true;
 }
 
+extern "C" CDECL void
+record_sp(void *limit);
+
 void
 rust_scheduler::place_task_in_tls(rust_task *task) {
     int result = pthread_setspecific(task_key, task);
     assert(!result && "Couldn't place the task in TLS!");
+    record_sp(task->stk->data + RED_ZONE_SIZE);
 }
 
 rust_task *