diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2025-04-12 18:14:17 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-12 18:14:17 +0200 |
| commit | 9352f379e8a08bcc5a3bfc851bfb6c6a662000af (patch) | |
| tree | 9fee8a3b98ab806c02aab3a6e9646ccea08f40f1 /lib/libtsan/sanitizer_common/sanitizer_suppressions.h | |
| parent | 4e700fdf8ed01e7fc856e631ceffd6006e6f48df (diff) | |
| parent | 1f896c1bf89aa0e3d2a0dce1f4cf6ba6ce5ae9ed (diff) | |
| download | zig-9352f379e8a08bcc5a3bfc851bfb6c6a662000af.tar.gz zig-9352f379e8a08bcc5a3bfc851bfb6c6a662000af.zip | |
Merge pull request #23529 from alexrp/2879-groundwork
Introduce libzigc for libc function implementations in Zig
Diffstat (limited to 'lib/libtsan/sanitizer_common/sanitizer_suppressions.h')
| -rw-r--r-- | lib/libtsan/sanitizer_common/sanitizer_suppressions.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/lib/libtsan/sanitizer_common/sanitizer_suppressions.h b/lib/libtsan/sanitizer_common/sanitizer_suppressions.h new file mode 100644 index 0000000000..2d88b1f72f --- /dev/null +++ b/lib/libtsan/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 |
