[PATCH] D12709: [PATCH] [sanitizers] [msan] Enable MSAN for aarch64
Adhemerval Zanella via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 8 14:18:39 PDT 2015
zatrazz created this revision.
zatrazz added reviewers: kcc, rengolin, dvyukov, eugenis, pcc.
zatrazz added a subscriber: llvm-commits.
Herald added subscribers: rengolin, aemerson.
This patch enabled msan for aarch64 with 39-bit VMA and 42-bit VMA.
As defined by lib/msan/msan.h the memory layout used is for 39-bit is:
00 0000 0000 - 40 0000 0000: invalid
40 0000 0000 - 43 0000 0000: shadow
43 0000 0000 - 46 0000 0000: origin
46 0000 0000 - 55 0000 0000: invalid
55 0000 0000 - 56 0000 0000: app (low)
56 0000 0000 - 70 0000 0000: invalid
70 0000 0000 - 80 0000 0000: app (high)
And for 42-bit VMA:
000 0000 0000 - 100 0000 0000: invalid
100 0000 0000 - 11b 0000 0000: shadow
11b 0000 0000 - 120 0000 0000: invalid
120 0000 0000 - 13b 0000 0000: origin
13b 0000 0000 - 2aa 0000 0000: invalid
2aa 0000 0000 - 2ab 0000 0000: app (low)
2ab 0000 0000 - 3f0 0000 0000: invalid
3f0 0000 0000 - 400 0000 0000: app (high)
Most of tests are passing with exception of:
* Linux/mallinfo.cc
* chained_origin_limits.cc
* dlerror.cc
* param_tls_limit.cc
* signal_stress_test.cc
* nonnull-arg.cpp
The 'Linux/mallinfo.cc' is due the fact AArch64 returns the sret in 'x8'
instead of default first argument 'x1'. So a function prototype that
aims to mimic (by using first argument as the return of function) won't
work. For GCC one can make a register alias (register var asm ("r8")), but
for clang it detects it an unused variable and generate wrong code.
The 'chained_origin_limits' is probably due a wrong code generation,
since it fails only when origin memory is used
(-fsanitize-memory-track-origins=2) and only in the returned code
(return buf[50]).
The 'signal_streess_test' and 'nonnull-arg' are due currently missing variadic
argument handling in memory sanitizer code instrumentation on LLVM side.
Both 'dlerror' and 'param_tls_test' are unknown failures that require
further investigation.
All the failures are XFAIL for aarch64 for now.
http://reviews.llvm.org/D12709
Files:
cmake/config-ix.cmake
lib/msan/msan.h
lib/msan/msan_allocator.cc
lib/msan/msan_interceptors.cc
lib/sanitizer_common/sanitizer_common_syscalls.inc
lib/sanitizer_common/sanitizer_platform_interceptors.h
lib/sanitizer_common/sanitizer_platform_limits_posix.cc
lib/sanitizer_common/sanitizer_platform_limits_posix.h
lib/sanitizer_common/sanitizer_stacktrace.h
test/msan/Linux/mallinfo.cc
test/msan/chained_origin_limits.cc
test/msan/dlerror.cc
test/msan/mmap.cc
test/msan/mmap_below_shadow.cc
test/msan/param_tls_limit.cc
test/msan/signal_stress_test.cc
test/msan/strlen_of_shadow.cc
test/sanitizer_common/TestCases/Linux/ptrace.cc
test/ubsan/TestCases/Misc/nonnull-arg.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D12709.34263.patch
Type: text/x-patch
Size: 18925 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150908/a24f2e77/attachment.bin>
More information about the llvm-commits
mailing list