Commit Graph

4 Commits (a40cc6a12df6e17b3e785af142c3c4d92b25800e)

Author SHA1 Message Date
Matt Ickstadt a40cc6a12d Don't compile probestack functions during testing 2017-09-15 18:13:06 -05:00
Alex Crichton 91eaa85902 Don't mangle probes all the time 2017-07-07 20:35:14 -07:00
Alex Crichton f9f6bd0589 Tweak definition of probestack functions
It looks like the old `__rust_probestack` routine is incompatible with newer
linux kernels. My best guess for this is that the kernel's auto-growth logic is
failing to trigger, causing what looks like a legitimate segfault to get
delivered. My best guess for why *that's* happening is that the faulting address
is below `%rsp`, whereas previously all faulting stack addresses were above
`%rsp`. The probestack routine does not modify `%rsp` as it's probing the stack,
and presumably newer kernels are interpreting this as a legitimate violation.

This commit tweaks the probestack routine to instead update `%rsp` incrementally
as probing happens. The ABI of the function, however, requires that `%rsp`
isn't changed as part of the function so it's restored at the end to the
previous value.
2017-07-07 10:16:03 -07:00
Alex Crichton 7ccf8408d0 Add `__rust_probestack` intrinsic
Will be required for rust-lang/rust#42816
2017-07-06 06:58:32 -07:00