1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- //===-- 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
|