[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:
Evgeniy Stepanov 2018-02-03 01:06:21 +00:00
parent 4316afbb44
commit 5f345049f3

View File

@ -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
-------