about summary refs log tree commit diff
path: root/src/rt
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-02-09 12:26:11 -0800
committerBrian Anderson <banderson@mozilla.com>2012-02-09 19:00:16 -0800
commit8ad9cf8087f2d1f1badfb7c8616c0b11cc4aa6db (patch)
treeebc0111f1c92014deb712d37d06e6d76e560efdc /src/rt
parent5d2442d89cbfbba03545a877b7768fe2ac34ef82 (diff)
downloadrust-8ad9cf8087f2d1f1badfb7c8616c0b11cc4aa6db.tar.gz
rust-8ad9cf8087f2d1f1badfb7c8616c0b11cc4aa6db.zip
rt: Add more stack-switching commentary
Diffstat (limited to 'src/rt')
-rw-r--r--src/rt/rust_task.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp
index 6d61065d551..2902e32a439 100644
--- a/src/rt/rust_task.cpp
+++ b/src/rt/rust_task.cpp
@@ -732,6 +732,11 @@ rust_task::config_notify(chan_handle chan) {
     notify_chan = chan;
 }
 
+// This is the function that switches stacks by calling another function with
+// a single void* argument while changing the stack pointer. It has a funny
+// name because gdb doesn't normally like to backtrace through split stacks
+// (thinks it indicates a bug), but has a special case to allow functions
+// named __morestack to move the stack pointer around.
 extern "C" void __morestack(void *args, void *fn_ptr, uintptr_t stack_ptr);
 
 static uintptr_t