From a78cfd5909024f9daa9a5175e9d411b0fac0e9a1 Mon Sep 17 00:00:00 2001 From: Sami Tolvanen Date: Fri, 6 Jan 2023 20:54:09 +0000 Subject: [GCOV] Set !kcfi_type metadata for indirectly called functions With CONFIG_GCOV_KERNEL, the Linux kernel indirectly calls the __llvm_gcov_* functions generated by LLVM. With -fsanitize=kcfi, these calls are made from instrumented code and fail indirect call checks as they don't have !kcfi_type metadata. Similarly to D138945, set type metadata for these functions to allow GCOV and KCFI to be both enabled. Link: https://github.com/ClangBuiltLinux/linux/issues/1778 Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D141444 --- llvm/lib/Transforms/Utils/ModuleUtils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'llvm/lib/Transforms/Utils/ModuleUtils.cpp') diff --git a/llvm/lib/Transforms/Utils/ModuleUtils.cpp b/llvm/lib/Transforms/Utils/ModuleUtils.cpp index 315258d..ee5e65f 100644 --- a/llvm/lib/Transforms/Utils/ModuleUtils.cpp +++ b/llvm/lib/Transforms/Utils/ModuleUtils.cpp @@ -150,7 +150,7 @@ void llvm::removeFromUsedLists(Module &M, removeFromUsedList(M, "llvm.compiler.used", ShouldRemove); } -static void setKCFIType(Module &M, Function &F, StringRef MangledType) { +void llvm::setKCFIType(Module &M, Function &F, StringRef MangledType) { if (!M.getModuleFlag("kcfi")) return; // Matches CodeGenModule::CreateKCFITypeId in Clang. -- cgit v1.1