# UBSan ignorelist for prebuilt slang-llvm shared library.
#
# The prebuilt libslang-llvm is not compiled with sanitizers, so UBSan's
# vptr checker cannot validate vtables from objects created inside it.
# This causes false-positive "invalid vptr" aborts when sanitized code
# calls virtual methods on COM interfaces returned by the non-instrumented
# library.
#
# Skip vptr checks for COM interfaces whose implementation lives in slang-llvm.
# The type: pattern suppresses checks at all call sites regardless of which
# source file the virtual call is in.
[vptr]
type:*ILLVMBuilder*
type:*IDownstreamCompiler*
# ISlangUnknown is the base COM interface; addRef()/release()/queryInterface()
# calls on any object returned from slang-llvm trigger invalid-vptr false
# positives (e.g. IDownstreamCompiler from LLVMDownstreamCompilerUtil).
# NOTE: This is broad (covers all COM objects). UBSan checks the base type at
# the addRef() call site, so suppressing only derived interfaces is not enough.
# TODO(#10754): Narrow this to src:-scoped suppressions or a smaller set of
# concrete call sites once we can characterize the slang-llvm boundary more
# precisely.
type:*ISlangUnknown*
type:*ISlangCastable*
type:*ISlangSharedLibrary*
type:*IFileCheck*
