mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-28 02:37:37 +00:00
[hwasan] Add a paragraph on stack instrumentation.
Reviewers: kcc Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D42874 llvm-svn: 324163
This commit is contained in:
parent
4316afbb44
commit
5f345049f3
@ -77,11 +77,18 @@ This can be based on any malloc that forces all objects to be N-aligned.
|
||||
Stack
|
||||
-----
|
||||
|
||||
Special compiler instrumentation is required to align the local variables
|
||||
by N, tag the memory and the pointers.
|
||||
Stack frames are instrumented by aligning all non-promotable allocas
|
||||
by `N` and tagging stack memory in function prologue and epilogue.
|
||||
|
||||
Tags for different allocas in one function are **not** generated
|
||||
independently; doing that in a function with `M` allocas would require
|
||||
maintaining `M` live stack pointers, significantly increasing register
|
||||
pressure. Instead we generate a single base tag value in the prologue,
|
||||
and build the tag for alloca number `M` as `ReTag(BaseTag, M)`, where
|
||||
ReTag can be as simple as exclusive-or with constant `M`.
|
||||
|
||||
Stack instrumentation is expected to be a major source of overhead,
|
||||
but could be optional.
|
||||
TODO: details.
|
||||
|
||||
Globals
|
||||
-------
|
||||
|
Loading…
Reference in New Issue
Block a user