Crates.io | gc-shadowstack |
lib.rs | gc-shadowstack |
version | 1.1.1 |
source | src |
created_at | 2021-04-09 17:30:45.370327 |
updated_at | 2021-04-09 17:53:32.6382 |
description | Shadow stack algorithm implementation for GC object rooting |
homepage | |
repository | https://github.com/playXE/gc-shadowstack |
max_upload_size | |
id | 381396 |
size | 15,744 |
Implementation of shadow stack to implement object rooting in GC libraries.
Unlike many GC algorithms which rely on a cooperative code generator to compile stack maps (no support in rustc), this algorithm carefully maintains a linked list of stack roots [Henderson2002]. This so-called “shadow stack” mirrors the machine stack. Maintaining this data structure is slower than using a stack map compiled into the executable as constant data, but has a significant portability advantage because it requires no special support from the target code generator, and does not require tricky platform-specific code to crawl the machine stack nor it requires heap allocation and reference counting for maintaining rooted object list.