pcc added a comment. Please add documentation. At the very least please document flags in `docs/ControlFlowIntegrity.rst` and `docs/UsersManual.rst`. We should also document the design in `docs/ControlFlowIntegrityDesign.rst`.
================ Comment at: lib/CodeGen/CGExpr.cpp:3868 @@ +3867,3 @@ + isa<llvm::MDNode>(MD) && dyn_cast<llvm::MDNode>(MD)->isDistinct(); + if (CGM.getCodeGenOpts().SanitizeCfiCrossDso && !hasLocalScope) { + EmitCfiSlowPathCheck(BitSetTest, MD, CastedCallee); ---------------- Yes, sorry. ================ Comment at: lib/CodeGen/CodeGenModule.cpp:1037 @@ -972,15 +1036,3 @@ - // If we are checking indirect calls and this is not a non-static member - // function, emit a bit set entry for the function type. - if (LangOpts.Sanitize.has(SanitizerKind::CFIICall) && - !(isa<CXXMethodDecl>(FD) && !cast<CXXMethodDecl>(FD)->isStatic())) { - llvm::NamedMDNode *BitsetsMD = - getModule().getOrInsertNamedMetadata("llvm.bitsets"); - - llvm::Metadata *BitsetOps[] = { - CreateMetadataIdentifierForType(FD->getType()), - llvm::ConstantAsMetadata::get(F), - llvm::ConstantAsMetadata::get(llvm::ConstantInt::get(Int64Ty, 0))}; - BitsetsMD->addOperand(llvm::MDTuple::get(getLLVMContext(), BitsetOps)); - } + CreateFunctionBitSetEntry(FD, F); } ---------------- Yes, that's because you fixed it :) ================ Comment at: lib/CodeGen/CodeGenModule.cpp:1041 @@ -988,3 +1040,3 @@ void CodeGenModule::addUsedGlobal(llvm::GlobalValue *GV) { assert(!GV->isDeclaration() && "Only globals with definition can force usage."); ---------------- What about callers of `EmitCfiSlowPathCheck`? Repository: rL LLVM http://reviews.llvm.org/D15367 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits