forked from OSchip/llvm-project
c336557f02
We can't use short granules with stack instrumentation when targeting older API levels because the rest of the system won't understand the short granule tags stored in shadow memory. Moreover, we need to be able to let old binaries (which won't understand short granule tags) run on a new system that supports short granule tags. Such binaries will call the __hwasan_tag_mismatch function when their outlined checks fail. We can compensate for the binary's lack of support for short granules by implementing the short granule part of the check in the __hwasan_tag_mismatch function. Unfortunately we can't do anything about inline checks, but I don't believe that we can generate these by default on aarch64, nor did we do so when the ABI was fixed. A new function, __hwasan_tag_mismatch_v2, is introduced that lets code targeting the new runtime avoid redoing the short granule check. Because tag mismatches are rare this isn't important from a performance perspective; the main benefit is that it introduces a symbol dependency that prevents binaries targeting the new runtime from running on older (i.e. incompatible) runtimes. Differential Revision: https://reviews.llvm.org/D68059 llvm-svn: 373035 |
||
---|---|---|
.. | ||
X86 | ||
alloca-array.ll | ||
alloca-compat.ll | ||
alloca-with-calls.ll | ||
alloca.ll | ||
atomic.ll | ||
basic-compat.ll | ||
basic.ll | ||
dbg-declare-tag-offset.ll | ||
globals.ll | ||
kernel-alloca.ll | ||
kernel-inline.ll | ||
kernel.ll | ||
landingpad.ll | ||
lazy-thread-init.ll | ||
mem-intrinsics.ll | ||
personality.ll | ||
prologue.ll | ||
with-calls.ll |