hctim marked 10 inline comments as done. hctim added inline comments.
================ Comment at: clang/lib/CodeGen/CodeGenModule.cpp:2767-2781 + if (NoSanitizeL.containsGlobal(LangOpts.Sanitize.Mask, GV->getName(), Category)) return true; - if (NoSanitizeL.containsLocation(EnabledAsanMask, Loc, Category)) + if (NoSanitizeL.containsLocation(LangOpts.Sanitize.Mask, Loc, Category)) return true; // Check global type. if (!Ty.isNull()) { // Drill down the array types: if global variable of a fixed type is ---------------- hctim wrote: > vitalybuka wrote: > > can this lines be landed separately? > sure (now we do touch a little bit here regardless) ================ Comment at: clang/lib/CodeGen/SanitizerMetadata.cpp:55 + + bool IsExcluded = CGM.isInNoSanitizeList(GV, Loc, Ty); + IsExcluded |= (NoSanitizeMask == SanitizerKind::All); ---------------- vitalybuka wrote: > vitalybuka wrote: > > it can be in some weird ubsan check ignore list, and this way it will > > propagate on asan/hwasan > > I don't think you can avoid extending isInNoSanitizeList (in a separate > > patch) > you you can introduce: > > ``` > bool CodeGenModule::isInNoSanitizeList(SanitizerMask Kind, > llvm::GlobalVariable *GV, > SourceLocation Loc) const { > ``` > > similar to > > ``` > bool CodeGenModule::isInNoSanitizeList(SanitizerMask Kind, llvm::Function *Fn, > SourceLocation Loc) const { > ``` done, but bearing in mind if you have some global `src:` exclude in an `-fsanitize-ignorelist` that's designed to ignore some file for UBSan, and then you compile with `-fsanitize=address,undefined` and use that `-fsanitize-ignorelist`, then those GVs would also be ignored in ASan. The right way to go about that is to have the creator of the ignorelist make sure that the `src:` rule is in a `[undefined]` block. Added the expected use case to `sanitizer-special-case-list-globals.txt`. i think it's small enough a change + relevant enough to this CL to not fork it out to a different patch and then have to do the cleanup twice. ================ Comment at: clang/lib/CodeGen/SanitizerMetadata.cpp:64 bool IsDynInit) { - if (!isAsanHwasanOrMemTag(CGM.getLangOpts().Sanitize)) - return; ---------------- vitalybuka wrote: > May be early isAsanHwasanOrMemTag check here is useful to avoid string stuff > below for compilation without sanitizers. sure, also hoisted the other check up ================ Comment at: clang/lib/CodeGen/SanitizerMetadata.cpp:70 - auto getNoSanitizeMask = [](const VarDecl &D) { - if (D.hasAttr<DisableSanitizerInstrumentationAttr>()) ---------------- vitalybuka wrote: > I don't insist but one it's cleaner with lambda and return > if you prefer your way please revert lambda in a separate patch reverted it back, lambda here seems very fancy for a simple farmer like me, but i can't deny that it's pretty. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126929/new/ https://reviews.llvm.org/D126929 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits