[ModuleUtils][KCFI] Set !kcfi_type metadata for sanitizer constructors
authorSami Tolvanen <samitolvanen@google.com>
Fri, 9 Dec 2022 00:06:36 +0000 (00:06 +0000)
committerSami Tolvanen <samitolvanen@google.com>
Fri, 9 Dec 2022 00:26:08 +0000 (00:26 +0000)
commit3b14862f0a968dc079530acbce4f2ca4aa7c1492
tree93b0463fc14ed0df6a50fdb6eff6b1c27d6688e5
parent7710e0e270f0b9c3b3f8a8a66b0f4a702cbdef3e
[ModuleUtils][KCFI] Set !kcfi_type metadata for sanitizer constructors

Set KCFI type metadata for the sanitizer constructors to prevent
runtime failures when these functions are indirectly called in
instrumented code. This fixes a compatibility issue with KASAN and
-fsanitize=kcfi in the Linux kernel.

Link: https://github.com/ClangBuiltLinux/linux/issues/1742
Reviewed By: nickdesaulniers, MaskRay

Differential Revision: https://reviews.llvm.org/D138945
llvm/lib/Transforms/Utils/ModuleUtils.cpp
llvm/test/Instrumentation/AddressSanitizer/kcfi.ll [new file with mode: 0644]