diff options
| author | Brian Anderson <banderson@mozilla.com> | 2013-08-09 23:35:51 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2013-08-16 13:24:25 -0700 |
| commit | da7d79dfbe46bf017e654598e481c6cc3a818af8 (patch) | |
| tree | 87061a03757790b4b5443abbd013bcf86f2f01d7 /src/rt/rust_stack.cpp | |
| parent | 8861ba6159fb93839c9c7d778aa26f0316f6b717 (diff) | |
| download | rust-da7d79dfbe46bf017e654598e481c6cc3a818af8.tar.gz rust-da7d79dfbe46bf017e654598e481c6cc3a818af8.zip | |
rt: Remove rust_stack
Diffstat (limited to 'src/rt/rust_stack.cpp')
| -rw-r--r-- | src/rt/rust_stack.cpp | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/src/rt/rust_stack.cpp b/src/rt/rust_stack.cpp deleted file mode 100644 index a609ac57324..00000000000 --- a/src/rt/rust_stack.cpp +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2012 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - - -#include "rust_stack.h" -#include "vg/valgrind.h" -#include "vg/memcheck.h" - -#include <cstdio> - -#ifdef _LP64 -const uintptr_t canary_value = 0xABCDABCDABCDABCD; -#else -const uintptr_t canary_value = 0xABCDABCD; -#endif - -void -register_valgrind_stack(stk_seg *stk) { - stk->valgrind_id = - VALGRIND_STACK_REGISTER(&stk->data[0], - stk->end); -} - -void -reuse_valgrind_stack(stk_seg *stk, uint8_t *sp) { - // 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. - assert(sp >= stk->data && sp <= (uint8_t*) stk->end - && "Stack pointer must be inside stack segment"); - size_t sz = stk->end - (uintptr_t)sp; - (void) VALGRIND_MAKE_MEM_UNDEFINED(sp, sz); - (void) sz; -} - -void -deregister_valgrind_stack(stk_seg *stk) { - VALGRIND_STACK_DEREGISTER(stk->valgrind_id); -} - -void -add_stack_canary(stk_seg *stk) { - stk->canary = canary_value; -} - -void -check_stack_canary(stk_seg *stk) { - assert(stk->canary == canary_value && "Somebody killed the canary"); -} - -// XXX: Duplication here between the local and exchange heap constructors - -stk_seg * -create_stack(memory_region *region, size_t sz) { - size_t total_sz = sizeof(stk_seg) + sz; - stk_seg *stk = (stk_seg *)region->malloc(total_sz, "stack"); - memset(stk, 0, sizeof(stk_seg)); - stk->end = (uintptr_t) &stk->data[sz]; - stk->is_big = 0; - add_stack_canary(stk); - register_valgrind_stack(stk); - return stk; -} - -void -destroy_stack(memory_region *region, stk_seg *stk) { - deregister_valgrind_stack(stk); - region->free(stk); -} - -stk_seg * -create_exchange_stack(rust_exchange_alloc *exchange, size_t sz) { - size_t total_sz = sizeof(stk_seg) + sz; - stk_seg *stk = (stk_seg *)exchange->malloc(total_sz); - memset(stk, 0, sizeof(stk_seg)); - stk->end = (uintptr_t) &stk->data[sz]; - stk->is_big = 0; - add_stack_canary(stk); - register_valgrind_stack(stk); - return stk; -} - -void -destroy_exchange_stack(rust_exchange_alloc *exchange, stk_seg *stk) { - deregister_valgrind_stack(stk); - exchange->free(stk); -} - - -extern "C" CDECL unsigned int -rust_valgrind_stack_register(void *start, void *end) { - return VALGRIND_STACK_REGISTER(start, end); -} - -extern "C" CDECL void -rust_valgrind_stack_deregister(unsigned int id) { - VALGRIND_STACK_DEREGISTER(id); -} |
