diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2014-02-14 11:41:26 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2014-02-14 11:41:26 +0000 |
commit | 2c44cbe210a9f88a50489446202c4cb5e974744e (patch) | |
tree | dd72b8f4be3dc214afe033fb4525f4640ccbd160 /lib/sanitizer_common/sanitizer_flags.h | |
parent | e1c4400a92b57ecf62abb892da2a8a0a3be43600 (diff) |
[sanitizer] Use mmap to zero-fill large shadow regions.
This is covered by existing ASan test.
This does not change anything for TSan by default (but provides a flag to
change the threshold size).
Based on a patch by florent.bruneau here:
https://code.google.com/p/address-sanitizer/issues/detail?id=256
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@201400 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/sanitizer_common/sanitizer_flags.h')
-rw-r--r-- | lib/sanitizer_common/sanitizer_flags.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/sanitizer_common/sanitizer_flags.h b/lib/sanitizer_common/sanitizer_flags.h index a580acad8..dbd8f695a 100644 --- a/lib/sanitizer_common/sanitizer_flags.h +++ b/lib/sanitizer_common/sanitizer_flags.h @@ -20,6 +20,7 @@ namespace __sanitizer { void ParseFlag(const char *env, bool *flag, const char *name); void ParseFlag(const char *env, int *flag, const char *name); +void ParseFlag(const char *env, uptr *flag, const char *name); void ParseFlag(const char *env, const char **flag, const char *name); struct CommonFlags { @@ -70,6 +71,9 @@ struct CommonFlags { bool allow_user_segv_handler; // If set, uses alternate stack for signal handling. bool use_sigaltstack; + // Large shadow regions are zero-filled using mmap(NORESERVE) instead of + // memset. This is the threshold size in bytes. + uptr clear_shadow_mmap_threshold; }; inline CommonFlags *common_flags() { |