diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-12-20 11:05:19 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-12-20 11:05:19 +0000 |
commit | 5490f721ce253f1482806b913fc39765177af08f (patch) | |
tree | 2520327def9ea8ec095f226efcb2c07f81fb48c0 /lib/msan/msan.cc | |
parent | 90269644e0ade3185c3f5fc97096cfd813b40622 (diff) |
[msan] Replace wrap_indirect_calls runtime flag with an interface method.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@197799 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/msan/msan.cc')
-rw-r--r-- | lib/msan/msan.cc | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/lib/msan/msan.cc b/lib/msan/msan.cc index cee62c520..c9c3b8acf 100644 --- a/lib/msan/msan.cc +++ b/lib/msan/msan.cc @@ -31,7 +31,7 @@ using namespace __sanitizer; static THREADLOCAL int msan_expect_umr = 0; static THREADLOCAL int msan_expected_umr_found = 0; -static int msan_running_under_dr = 0; +static bool msan_running_under_dr; // Function argument shadow. Each argument starts at the next available 8-byte // aligned address. @@ -74,10 +74,6 @@ extern "C" SANITIZER_WEAK_ATTRIBUTE const int __msan_keep_going; namespace __msan { -static bool IsRunningUnderDr() { - return false; -} - void EnterSymbolizer() { ++is_in_symbolizer; } void ExitSymbolizer() { --is_in_symbolizer; } bool IsInSymbolizer() { return is_in_symbolizer; } @@ -122,7 +118,6 @@ static void ParseFlagsFromString(Flags *f, const char *str) { } ParseFlag(str, &f->report_umrs, "report_umrs"); ParseFlag(str, &f->wrap_signals, "wrap_signals"); - ParseFlag(str, &f->wrap_indirect_calls, "wrap_indirect_calls"); // keep_going is an old name for halt_on_error, // and it has inverse meaning. @@ -147,7 +142,6 @@ static void InitializeFlags(Flags *f, const char *options) { f->exit_code = 77; f->report_umrs = true; f->wrap_signals = true; - f->wrap_indirect_calls = "dr_app_handle_mbr_target"; f->halt_on_error = !&__msan_keep_going; // Override from user-specified string. @@ -292,7 +286,6 @@ void __msan_init() { VPrintf(1, "MSAN_OPTIONS: %s\n", msan_options ? msan_options : "<empty>"); - msan_running_under_dr = IsRunningUnderDr(); __msan_clear_on_return(); if (__msan_get_track_origins()) VPrintf(1, "msan_track_origins\n"); @@ -324,8 +317,6 @@ void __msan_init() { msan_init_is_running = 0; msan_inited = 1; - - InitializeIndirectCallWrapping(flags()->wrap_indirect_calls); } void __msan_set_exit_code(int exit_code) { @@ -542,10 +533,21 @@ void __sanitizer_unaligned_store64(uu64 *p, u64 x) { *p = x; } +void *__msan_wrap_indirect_call(void *target) { + return IndirectExternCall(target); +} + +void __msan_dr_is_initialized() { + msan_running_under_dr = true; +} + +void __msan_set_indirect_call_wrapper(uptr wrapper) { + SetIndirectCallWrapper(wrapper); +} + #if !SANITIZER_SUPPORTS_WEAK_HOOKS extern "C" { SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE const char* __msan_default_options() { return ""; } } // extern "C" #endif - |