[SanitizerBinaryMetadata] Introduce SanitizerBinaryMetadata instrumentation pass
authorMarco Elver <elver@google.com>
Tue, 6 Sep 2022 13:49:33 +0000 (15:49 +0200)
committerMarco Elver <elver@google.com>
Wed, 7 Sep 2022 19:25:40 +0000 (21:25 +0200)
commit97c2220565abcef6c3fd674dcca98f7176e132c5
treeb6bfee89b03048edcf937000782f2c55630535e6
parent8d2a447bf92700e576e037c5f6495f74153cf5e9
[SanitizerBinaryMetadata] Introduce SanitizerBinaryMetadata instrumentation pass

Introduces the SanitizerBinaryMetadata instrumentation pass which uses
the new MD_pcsections metadata kinds to instrument certain types of
instructions and functions required for breakpoint-based sanitizers.

The first intended user of the binary metadata emitted will be a variant
of GWP-TSan [1]. GWP-TSan will require information about atomic
accesses; to unambiguously determine if an access is atomic or not, we
also require "covered" information which code has been compiled with
SanitizerBinaryMetadata instrumentation enabled.

[1] https://llvm.org/devmtg/2020-09/slides/Morehouse-GWP-Tsan.pdf

Reviewed By: dvyukov

Differential Revision: https://reviews.llvm.org/D130887
llvm/include/llvm/Transforms/Instrumentation.h
llvm/include/llvm/Transforms/Instrumentation/SanitizerBinaryMetadata.h [new file with mode: 0644]
llvm/lib/Passes/PassBuilder.cpp
llvm/lib/Passes/PassRegistry.def
llvm/lib/Transforms/Instrumentation/CMakeLists.txt
llvm/lib/Transforms/Instrumentation/SanitizerBinaryMetadata.cpp [new file with mode: 0644]
llvm/test/Instrumentation/SanitizerBinaryMetadata/atomics.ll [new file with mode: 0644]