diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-02-19 11:09:29 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-02-19 11:09:29 +0000 |
commit | f35eae83757946decb312deab3f0fe155fe5d580 (patch) | |
tree | 7f929d1a21595f2812e0f36a68b5d4345794db9a /lib/msan/msan.cc | |
parent | b711ca6e040d0ac4adb79e688e1a59afcc871d20 (diff) |
[msan] Fix ReExec on linux.
execle(argv[0], ...) is wrong, because argv[0] may contain a PATH-resolvable
program name. Execute /proc/self/exe instead.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@175504 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/msan/msan.cc')
-rw-r--r-- | lib/msan/msan.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/msan/msan.cc b/lib/msan/msan.cc index 8a01da310..d28d83ce2 100644 --- a/lib/msan/msan.cc +++ b/lib/msan/msan.cc @@ -222,6 +222,8 @@ void __msan_init() { InitializeInterceptors(); ReplaceOperatorsNewAndDelete(); + const char *msan_options = GetEnv("MSAN_OPTIONS"); + InitializeFlags(&msan_flags, msan_options); if (StackSizeIsUnlimited()) { if (flags()->verbosity) Printf("Unlimited stack, doing reexec\n"); @@ -230,10 +232,10 @@ void __msan_init() { SetStackSizeLimitInBytes(32 * 1024 * 1024); ReExec(); } - const char *msan_options = GetEnv("MSAN_OPTIONS"); - InitializeFlags(&msan_flags, msan_options); + if (flags()->verbosity) Printf("MSAN_OPTIONS: %s\n", msan_options ? msan_options : "<empty>"); + msan_running_under_dr = IsRunningUnderDr(); __msan_clear_on_return(); if (__msan_track_origins && flags()->verbosity > 0) |