summaryrefslogtreecommitdiff
path: root/lib/msan
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2015-10-12 23:20:24 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2015-10-12 23:20:24 +0000
commit00ba8b29dc0d744529b98b34c698da437d354a6c (patch)
treef1ea0311f9858661c41118053fc3b80ada122438 /lib/msan
parent83eb8a52f9e739adfde4d248b5a985f37cc2325b (diff)
[msan] Add __msan_copy_shadow interface function.
This can be used to annotate copies of memory that are not observed by MSan. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@250124 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/msan')
-rw-r--r--lib/msan/msan_interceptors.cc5
-rw-r--r--lib/msan/msan_interface_internal.h3
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/msan/msan_interceptors.cc b/lib/msan/msan_interceptors.cc
index f363c2695..1bf196ecd 100644
--- a/lib/msan/msan_interceptors.cc
+++ b/lib/msan/msan_interceptors.cc
@@ -1011,6 +1011,11 @@ void __msan_allocated_memory(const void *data, uptr size) {
}
}
+void __msan_copy_shadow(void *dest, const void *src, uptr n) {
+ GET_STORE_STACK_TRACE;
+ MoveShadowAndOrigin(dest, src, n, &stack);
+}
+
void __sanitizer_dtor_callback(const void *data, uptr size) {
GET_MALLOC_STACK_TRACE;
if (flags()->poison_in_dtor) {
diff --git a/lib/msan/msan_interface_internal.h b/lib/msan/msan_interface_internal.h
index 7340a34ca..c1e02ce72 100644
--- a/lib/msan/msan_interface_internal.h
+++ b/lib/msan/msan_interface_internal.h
@@ -161,6 +161,9 @@ void __sanitizer_unaligned_store64(uu64 *p, u64 x);
SANITIZER_INTERFACE_ATTRIBUTE
void __msan_set_death_callback(void (*callback)(void));
+
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_copy_shadow(void *dst, const void *src, uptr size);
} // extern "C"
#endif // MSAN_INTERFACE_INTERNAL_H