about summary refs log tree commit diff
path: root/src/test/codegen
diff options
context:
space:
mode:
authorTomasz Miąsko <tomasz.miasko@gmail.com>2019-11-16 00:00:00 +0000
committerTomasz Miąsko <tomasz.miasko@gmail.com>2019-11-22 19:32:45 +0100
commit0812eebc4a709f8fa39ecdd918b5df3113576129 (patch)
treeb59fe93d324fa9a5a0b76e6a7ab9db01505d9432 /src/test/codegen
parent9b907032891712c21ef9c8ff20c46cd2b20fcf30 (diff)
downloadrust-0812eebc4a709f8fa39ecdd918b5df3113576129.tar.gz
rust-0812eebc4a709f8fa39ecdd918b5df3113576129.zip
Add support for tracking origins of uninitialized memory
Diffstat (limited to 'src/test/codegen')
-rw-r--r--src/test/codegen/sanitizer-memory-track-orgins.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/test/codegen/sanitizer-memory-track-orgins.rs b/src/test/codegen/sanitizer-memory-track-orgins.rs
new file mode 100644
index 00000000000..fd8be0bced7
--- /dev/null
+++ b/src/test/codegen/sanitizer-memory-track-orgins.rs
@@ -0,0 +1,28 @@
+// Verifies that MemorySanitizer track-origins level can be controlled
+// with -Zsanitizer-memory-track-origins option.
+//
+// needs-sanitizer-support
+// only-linux
+// only-x86_64
+// revisions:MSAN-0 MSAN-1 MSAN-2
+//
+//[MSAN-0] compile-flags: -Zsanitizer=memory
+//[MSAN-1] compile-flags: -Zsanitizer=memory -Zsanitizer-memory-track-origins=1
+//[MSAN-2] compile-flags: -Zsanitizer=memory -Zsanitizer-memory-track-origins
+
+#![crate_type="lib"]
+
+// MSAN-0-NOT: @__msan_track_origins
+// MSAN-1:     @__msan_track_origins = weak_odr local_unnamed_addr constant i32 1
+// MSAN-2:     @__msan_track_origins = weak_odr local_unnamed_addr constant i32 2
+//
+// MSAN-0-LABEL: define void @copy(
+// MSAN-1-LABEL: define void @copy(
+// MSAN-2-LABEL: define void @copy(
+#[no_mangle]
+pub fn copy(dst: &mut i32, src: &i32) {
+    // MSAN-0-NOT: call i32 @__msan_chain_origin(
+    // MSAN-1-NOT: call i32 @__msan_chain_origin(
+    // MSAN-2:     call i32 @__msan_chain_origin(
+    *dst = *src;
+}