diff options
Diffstat (limited to 'contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.h')
| -rw-r--r-- | contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.h | 56 | 
1 files changed, 56 insertions, 0 deletions
| diff --git a/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.h b/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.h new file mode 100644 index 000000000000..2d88b1f72fa6 --- /dev/null +++ b/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.h @@ -0,0 +1,56 @@ +//===-- sanitizer_suppressions.h --------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// Suppression parsing/matching code. +// +//===----------------------------------------------------------------------===// +#ifndef SANITIZER_SUPPRESSIONS_H +#define SANITIZER_SUPPRESSIONS_H + +#include "sanitizer_common.h" +#include "sanitizer_atomic.h" +#include "sanitizer_internal_defs.h" + +namespace __sanitizer { + +struct Suppression { +  Suppression() { internal_memset(this, 0, sizeof(*this)); } +  const char *type; +  char *templ; +  atomic_uint32_t hit_count; +  uptr weight; +}; + +class SuppressionContext { + public: +  // Create new SuppressionContext capable of parsing given suppression types. +  SuppressionContext(const char *supprression_types[], +                     int suppression_types_num); + +  void ParseFromFile(const char *filename); +  void Parse(const char *str); + +  bool Match(const char *str, const char *type, Suppression **s); +  uptr SuppressionCount() const; +  bool HasSuppressionType(const char *type) const; +  const Suppression *SuppressionAt(uptr i) const; +  void GetMatched(InternalMmapVector<Suppression *> *matched); + + private: +  static const int kMaxSuppressionTypes = 64; +  const char **const suppression_types_; +  const int suppression_types_num_; + +  InternalMmapVector<Suppression> suppressions_; +  bool has_suppression_type_[kMaxSuppressionTypes]; +  bool can_parse_; +}; + +}  // namespace __sanitizer + +#endif  // SANITIZER_SUPPRESSIONS_H | 
