diff options
author | Naomi Musgrave <nmusgrave@google.com> | 2015-07-17 23:28:00 +0000 |
---|---|---|
committer | Naomi Musgrave <nmusgrave@google.com> | 2015-07-17 23:28:00 +0000 |
commit | 7e3eee503762f7c1654d8795e452b5a2c88df1d2 (patch) | |
tree | 0580c819de18ce4c5811eadc2392c5de97d925ee /lib/msan | |
parent | 0015659260c9f12c7b1e96916b31e8ebc6494552 (diff) |
re-added changes due to svn config setting issues
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@242589 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/msan')
-rw-r--r-- | lib/msan/msan.cc | 2 | ||||
-rw-r--r-- | lib/msan/msan_flags.inc | 1 | ||||
-rw-r--r-- | lib/msan/msan_interceptors.cc | 8 | ||||
-rw-r--r-- | lib/msan/msan_interface_internal.h | 5 |
4 files changed, 15 insertions, 1 deletions
diff --git a/lib/msan/msan.cc b/lib/msan/msan.cc index 163d59dab..d324dcfee 100644 --- a/lib/msan/msan.cc +++ b/lib/msan/msan.cc @@ -511,7 +511,7 @@ void __msan_partial_poison(const void* data, void* shadow, uptr size) { internal_memcpy((void*)MEM_TO_SHADOW((uptr)data), shadow, size); } -void __msan_load_unpoisoned(void *src, uptr size, void *dst) { +void __msan_load_unpoisoned(const void *src, uptr size, void *dst) { internal_memcpy(dst, src, size); __msan_unpoison(dst, size); } diff --git a/lib/msan/msan_flags.inc b/lib/msan/msan_flags.inc index cb58ffc4a..3729b3fc4 100644 --- a/lib/msan/msan_flags.inc +++ b/lib/msan/msan_flags.inc @@ -24,6 +24,7 @@ MSAN_FLAG(bool, poison_heap_with_zeroes, false, "") MSAN_FLAG(bool, poison_stack_with_zeroes, false, "") MSAN_FLAG(bool, poison_in_malloc, true, "") MSAN_FLAG(bool, poison_in_free, true, "") +MSAN_FLAG(bool, poison_in_dtor, false, "") MSAN_FLAG(bool, report_umrs, true, "") MSAN_FLAG(bool, wrap_signals, true, "") MSAN_FLAG(bool, print_stats, false, "") diff --git a/lib/msan/msan_interceptors.cc b/lib/msan/msan_interceptors.cc index 6d5a056a3..972a9d3bc 100644 --- a/lib/msan/msan_interceptors.cc +++ b/lib/msan/msan_interceptors.cc @@ -1005,6 +1005,14 @@ void __msan_allocated_memory(const void *data, uptr size) { } } +void __sanitizer_dtor_callback(const void *data, uptr size) { + GET_MALLOC_STACK_TRACE; + if (flags()->poison_in_dtor) { + stack.tag = STACK_TRACE_TAG_POISON; + PoisonMemory(data, size, &stack); + } +} + INTERCEPTOR(void *, mmap, void *addr, SIZE_T length, int prot, int flags, int fd, OFF_T offset) { if (msan_init_is_running) diff --git a/lib/msan/msan_interface_internal.h b/lib/msan/msan_interface_internal.h index f4d37d96c..3b0e30c56 100644 --- a/lib/msan/msan_interface_internal.h +++ b/lib/msan/msan_interface_internal.h @@ -140,6 +140,11 @@ void __msan_partial_poison(const void* data, void* shadow, uptr size); SANITIZER_INTERFACE_ATTRIBUTE void __msan_allocated_memory(const void* data, uptr size); +// Tell MSan about newly destroyed memory. Memory will be marked +// uninitialized. +SANITIZER_INTERFACE_ATTRIBUTE +void __sanitizer_dtor_callback(const void* data, uptr size); + SANITIZER_INTERFACE_ATTRIBUTE u16 __sanitizer_unaligned_load16(const uu16 *p); |