diff options
| author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-12-13 13:13:46 +0000 |
|---|---|---|
| committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-12-13 13:13:46 +0000 |
| commit | 879c552dd951faaad42c68723fcbbf32f1409f20 (patch) | |
| tree | fbb0d7f9fbdb50c06ed6bc3d6dfbf19c22521576 /compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc | |
| parent | 002a14765eba600b555dba39f7650c55146ae698 (diff) | |
| download | bcm5719-llvm-879c552dd951faaad42c68723fcbbf32f1409f20.tar.gz bcm5719-llvm-879c552dd951faaad42c68723fcbbf32f1409f20.zip | |
[msan] Wrap indirect calls from sanitizer rtl when running under DR.
llvm-svn: 197226
Diffstat (limited to 'compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc')
| -rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc index a755f2adf22..89e801358ab 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc @@ -98,7 +98,7 @@ bool SetEnv(const char *name, const char *value) { setenv_ft setenv_f; CHECK_EQ(sizeof(setenv_f), sizeof(f)); internal_memcpy(&setenv_f, &f, sizeof(f)); - return setenv_f(name, value, 1) == 0; + return IndirectExternCall(setenv_f)(name, value, 1) == 0; } #endif @@ -196,7 +196,7 @@ void InitTlsSize() { CHECK_NE(get_tls, 0); size_t tls_size = 0; size_t tls_align = 0; - get_tls(&tls_size, &tls_align); + IndirectExternCall(get_tls)(&tls_size, &tls_align); g_tls_size = tls_size; #endif } @@ -353,6 +353,13 @@ uptr GetListOfModules(LoadedModule *modules, uptr max_modules, } #endif // SANITIZER_ANDROID +uptr indirect_call_wrapper; + +void InitializeIndirectCallWrapping(const char *wrapper_name) { + CHECK(wrapper_name && *wrapper_name); + indirect_call_wrapper = (uptr)dlsym(RTLD_DEFAULT, wrapper_name); +} + } // namespace __sanitizer #endif // SANITIZER_LINUX |

