brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 2d88b1f Raw
57 lines · c
1//===-- sanitizer_suppressions.h --------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// Suppression parsing/matching code.10//11//===----------------------------------------------------------------------===//12#ifndef SANITIZER_SUPPRESSIONS_H13#define SANITIZER_SUPPRESSIONS_H14 15#include "sanitizer_common.h"16#include "sanitizer_atomic.h"17#include "sanitizer_internal_defs.h"18 19namespace __sanitizer {20 21struct Suppression {22  Suppression() { internal_memset(this, 0, sizeof(*this)); }23  const char *type;24  char *templ;25  atomic_uint32_t hit_count;26  uptr weight;27};28 29class SuppressionContext {30 public:31  // Create new SuppressionContext capable of parsing given suppression types.32  SuppressionContext(const char *supprression_types[],33                     int suppression_types_num);34 35  void ParseFromFile(const char *filename);36  void Parse(const char *str);37 38  bool Match(const char *str, const char *type, Suppression **s);39  uptr SuppressionCount() const;40  bool HasSuppressionType(const char *type) const;41  const Suppression *SuppressionAt(uptr i) const;42  void GetMatched(InternalMmapVector<Suppression *> *matched);43 44 private:45  static const int kMaxSuppressionTypes = 64;46  const char **const suppression_types_;47  const int suppression_types_num_;48 49  InternalMmapVector<Suppression> suppressions_;50  bool has_suppression_type_[kMaxSuppressionTypes];51  bool can_parse_;52};53 54}  // namespace __sanitizer55 56#endif  // SANITIZER_SUPPRESSIONS_H57