]> git.lizzy.rs Git - rust.git/commit
Fix unwinding on OS X 10.9.
authorMark Rowe <mrowe@bdash.net.nz>
Tue, 22 Oct 2013 09:50:52 +0000 (02:50 -0700)
committerMark Rowe <mrowe@bdash.net.nz>
Tue, 22 Oct 2013 10:02:25 +0000 (03:02 -0700)
commitfd8c06e7b56baab37ce6154cca6c518a76d54a78
treebad666332975507e4782bbf90b5aa053f0b7f37c
parent7e4404b6fbbf28bbe115ab8837f929e51c831a31
Fix unwinding on OS X 10.9.

OS X 10.9's linker has a bug that results in it failing to preserve
DWARF unwind information when passed the -no_compact_unwind flag.
This flag is passed on OS X because the unwind information for
__morestack cannot be represented by the compact unwind format.

We can work around this problem by using a more targeted approach
to disabling compact unwind information. The OS X linker looks for
a particular pattern in the DWARF unwind information and will not
attempt to convert the unwind information to the compact format.
The pattern in question is the return address register being saved
twice to the same location.

Fixes #6849.
mk/platform.mk
src/librustc/back/link.rs
src/rt/arch/i386/morestack.S
src/rt/arch/x86_64/morestack.S