diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-03-03 17:15:51 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-03-05 19:39:56 -0800 |
| commit | cc276fe3c96965ba39b9fba3b588a1eaa3941d86 (patch) | |
| tree | e0891c8a19fedf11797652052a6dbbcf3e45b2be /src/rt/rust_stack.cpp | |
| parent | c78da1e17016d178d55d5f899ab254f5ed44a899 (diff) | |
| download | rust-cc276fe3c96965ba39b9fba3b588a1eaa3941d86.tar.gz rust-cc276fe3c96965ba39b9fba3b588a1eaa3941d86.zip | |
rt: Be more precise with VALGRIND_MAKE_MEM_UNDEFINED
Diffstat (limited to 'src/rt/rust_stack.cpp')
| -rw-r--r-- | src/rt/rust_stack.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/rt/rust_stack.cpp b/src/rt/rust_stack.cpp index b5a83832f08..0522b3b9847 100644 --- a/src/rt/rust_stack.cpp +++ b/src/rt/rust_stack.cpp @@ -17,13 +17,15 @@ register_valgrind_stack(stk_seg *stk) { } void -prepare_valgrind_stack(stk_seg *stk) { +reuse_valgrind_stack(stk_seg *stk, uint8_t *sp) { #ifndef NVALGRIND // Establish that the stack is accessible. This must be done when reusing // old stack segments, since the act of popping the stack previously // caused valgrind to consider the whole thing inaccessible. - size_t sz = stk->end - (uintptr_t)&stk->data[0]; - VALGRIND_MAKE_MEM_UNDEFINED(stk->data, sz); + assert(sp >= stk->data && sp <= (uint8_t*) stk->end + && "Stack pointer must be inside stack segment"); + size_t sz = stk->end - (uintptr_t)sp; + VALGRIND_MAKE_MEM_UNDEFINED(sp, sz); #endif } |
