summaryrefslogtreecommitdiffstats
path: root/compiler-rt
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-rt')
-rw-r--r--compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc b/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc
index 6bb62e45710..90306496d40 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc
+++ b/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc
@@ -274,6 +274,11 @@ void GetThreadStackAndTls(bool main, uptr *stk_addr, uptr *stk_size,
Printf("Can't find [stack] in /proc/self/maps\n");
Die();
}
+ pos = (char*)internal_strchr(pos, '-');
+ if (pos == 0) {
+ Printf("Can't find [stack] in /proc/self/maps\n");
+ Die();
+ }
uptr stack = 0;
for (; pos++;) {
uptr num = 0;
@@ -290,8 +295,7 @@ void GetThreadStackAndTls(bool main, uptr *stk_addr, uptr *stk_size,
struct rlimit rl;
CHECK_EQ(getrlimit(RLIMIT_STACK, &rl), 0);
-
- *stk_addr = stack;
+ *stk_addr = stack - rl.rlim_cur;
*stk_size = rl.rlim_cur;
} else {
*stk_addr = 0;
OpenPOWER on IntegriCloud