about summary refs log tree commit diff
path: root/src/test/codegen
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2017-06-21 12:08:18 -0700
committerAlex Crichton <alex@alexcrichton.com>2017-07-06 08:58:19 -0700
commit5dbd97de3d825c6898df62baca33ff1f57cb77eb (patch)
tree58b555b75d77d30358f257b93e0e6ceda8cf30ee /src/test/codegen
parent8cab2c73d47a4b0ec7dc1bf40eb59492139fb707 (diff)
downloadrust-5dbd97de3d825c6898df62baca33ff1f57cb77eb.tar.gz
rust-5dbd97de3d825c6898df62baca33ff1f57cb77eb.zip
rustc: Implement stack probes for x86
This commit implements stack probes on x86/x86_64 using the freshly landed
support upstream in LLVM. The purpose of stack probes here are to guarantee a
segfault on stack overflow rather than having a chance of running over the guard
page already present on all threads by accident.

At this time there's no support for any other architecture because LLVM itself
does not have support for other architectures.
Diffstat (limited to 'src/test/codegen')
-rw-r--r--src/test/codegen/stack-probes.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/test/codegen/stack-probes.rs b/src/test/codegen/stack-probes.rs
new file mode 100644
index 00000000000..b7c794f4475
--- /dev/null
+++ b/src/test/codegen/stack-probes.rs
@@ -0,0 +1,24 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// ignore-arm
+// ignore-wasm
+// ignore-emscripten
+// ignore-windows
+// no-system-llvm
+// compile-flags: -C no-prepopulate-passes
+
+#![crate_type = "lib"]
+
+#[no_mangle]
+pub fn foo() {
+// CHECK: @foo() unnamed_addr #0
+// CHECK: attributes #0 = { {{.*}}"probe-stack"="__rust_probestack"{{.*}} }
+}