/src/test/codegen/sanitizer-memory-track-orgins.rs

https://gitlab.com/rust-lang/rust · Rust · 30 lines · 5 code · 2 blank · 23 comment · 0 complexity · ddb92855269f3dd09b8c99e4fb08de0c MD5 · raw file

  1. // Verifies that MemorySanitizer track-origins level can be controlled
  2. // with -Zsanitizer-memory-track-origins option.
  3. //
  4. // needs-sanitizer-memory
  5. // revisions:MSAN-0 MSAN-1 MSAN-2 MSAN-1-LTO MSAN-2-LTO
  6. //
  7. //[MSAN-0] compile-flags: -Zsanitizer=memory
  8. //[MSAN-1] compile-flags: -Zsanitizer=memory -Zsanitizer-memory-track-origins=1
  9. //[MSAN-2] compile-flags: -Zsanitizer=memory -Zsanitizer-memory-track-origins
  10. //[MSAN-1-LTO] compile-flags: -Zsanitizer=memory -Zsanitizer-memory-track-origins=1 -C lto=fat
  11. //[MSAN-2-LTO] compile-flags: -Zsanitizer=memory -Zsanitizer-memory-track-origins -C lto=fat
  12. #![crate_type="lib"]
  13. // MSAN-0-NOT: @__msan_track_origins
  14. // MSAN-1: @__msan_track_origins = weak_odr {{.*}}constant i32 1
  15. // MSAN-2: @__msan_track_origins = weak_odr {{.*}}constant i32 2
  16. // MSAN-1-LTO: @__msan_track_origins = weak_odr {{.*}}constant i32 1
  17. // MSAN-2-LTO: @__msan_track_origins = weak_odr {{.*}}constant i32 2
  18. //
  19. // MSAN-0-LABEL: define void @copy(
  20. // MSAN-1-LABEL: define void @copy(
  21. // MSAN-2-LABEL: define void @copy(
  22. #[no_mangle]
  23. pub fn copy(dst: &mut i32, src: &i32) {
  24. // MSAN-0-NOT: call i32 @__msan_chain_origin(
  25. // MSAN-1-NOT: call i32 @__msan_chain_origin(
  26. // MSAN-2: call i32 @__msan_chain_origin(
  27. *dst = *src;
  28. }