Skip to content
  • Peter Collingbourne's avatar
    hwasan: Compatibility fixes for short granules. · c336557f
    Peter Collingbourne authored
    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
    c336557f