]> git.lizzy.rs Git - rust.git/commit
rt: Various tweaks to make __morestack unwinding work on linux
authorBrian Anderson <banderson@mozilla.com>
Wed, 7 Dec 2011 00:26:47 +0000 (16:26 -0800)
committerBrian Anderson <banderson@mozilla.com>
Wed, 7 Dec 2011 00:32:41 +0000 (16:32 -0800)
commit9a738fd61d3006796d518ba751f5bb632f65edb6
tree0d5c8e9f685d33bb340abf01eb4e27836d110e1e
parenta1b215aea1af1c7131219bec66603eca4b77b8b7
rt: Various tweaks to make __morestack unwinding work on linux

When unwinding through __morestack the stack limit in the TLS is invalidated
and must be reset. Instead of actually landing at __morestack we're
just going to make all our Rust landing pads call upcall_reset_stack_limit,
which will find the stack segment that corresponds to the current stack
pointer and put the limit in the TLS.

Also massively expand the stack segment red zone to make more room for the
dynamic linker. Will fix in the future.
src/comp/back/upcall.rs
src/comp/middle/trans.rs
src/rt/arch/i386/record_sp.S
src/rt/arch/x86_64/morestack.S
src/rt/arch/x86_64/record_sp.S
src/rt/rust_task.cpp
src/rt/rust_task.h
src/rt/rust_upcall.cpp
src/rt/rustrt.def.in
src/test/run-fail/morestack3.rs