summaryrefslogtreecommitdiff
path: root/lib/msan/msan.cc
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2013-02-19 11:09:29 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2013-02-19 11:09:29 +0000
commitf35eae83757946decb312deab3f0fe155fe5d580 (patch)
tree7f929d1a21595f2812e0f36a68b5d4345794db9a /lib/msan/msan.cc
parentb711ca6e040d0ac4adb79e688e1a59afcc871d20 (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.cc6
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)