forked from OSchip/llvm-project
8fe99a0ef2
Introduce the -msan-kernel flag, which enables the kernel instrumentation. The main differences between KMSAN and MSan instrumentations are: - KMSAN implies msan-track-origins=2, msan-keep-going=true; - there're no explicit accesses to shadow and origin memory. Shadow and origin values for a particular X-byte memory location are read and written via pointers returned by __msan_metadata_ptr_for_load_X(u8 *addr) and __msan_store_shadow_origin_X(u8 *addr, uptr shadow, uptr origin); - TLS variables are stored in a single struct in per-task storage. A call to a function returning that struct is inserted into every instrumented function before the entry block; - __msan_warning() takes a 32-bit origin parameter; - local variables are poisoned with __msan_poison_alloca() upon function entry and unpoisoned with __msan_unpoison_alloca() before leaving the function; - the pass doesn't declare any global variables or add global constructors to the translation unit. llvm-svn: 341637 |
||
---|---|---|
.. | ||
AArch64 | ||
Mips | ||
PowerPC | ||
X86 | ||
alloca.ll | ||
array_types.ll | ||
atomics.ll | ||
byval-alignment.ll | ||
check-constant-shadow.ll | ||
check_access_address.ll | ||
csr.ll | ||
global_ctors_2to3.ll | ||
instrumentation-with-call-threshold.ll | ||
manual-shadow.ll | ||
masked-store-load.ll | ||
missing_origin.ll | ||
msan_basic.ll | ||
msan_kernel_basic.ll | ||
msan_x86_bts_asm.ll | ||
msan_x86intrinsics.ll | ||
mul_by_constant.ll | ||
nosanitize.ll | ||
origin-alignment.ll | ||
origin-array.ll | ||
pr32842.ll | ||
return_from_main.ll | ||
store-long-origin.ll | ||
store-origin.ll | ||
str-nobuiltin.ll | ||
unreachable.ll | ||
unsized_type.ll | ||
vector_arith.ll | ||
vector_cmp.ll | ||
vector_cvt.ll | ||
vector_pack.ll | ||
vector_shift.ll | ||
with-call-type-size.ll |