1//===-- sanitizer_symbolizer_mac.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-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file is shared between various sanitizers' runtime libraries.
10//
11// Header for Mac-specific "atos" symbolizer.
12//===----------------------------------------------------------------------===//
13
14#ifndef SANITIZER_SYMBOLIZER_MAC_H
15#define SANITIZER_SYMBOLIZER_MAC_H
16
17#include "sanitizer_platform.h"
18#if SANITIZER_MAC
19
20#include "sanitizer_symbolizer_internal.h"
21
22namespace __sanitizer {
23
24class DlAddrSymbolizer : public SymbolizerTool {
25 public:
26  bool SymbolizePC(uptr addr, SymbolizedStack *stack) override;
27  bool SymbolizeData(uptr addr, DataInfo *info) override;
28};
29
30class AtosSymbolizerProcess;
31
32class AtosSymbolizer : public SymbolizerTool {
33 public:
34  explicit AtosSymbolizer(const char *path, LowLevelAllocator *allocator);
35
36  bool SymbolizePC(uptr addr, SymbolizedStack *stack) override;
37  bool SymbolizeData(uptr addr, DataInfo *info) override;
38
39 private:
40  AtosSymbolizerProcess *process_;
41};
42
43} // namespace __sanitizer
44
45#endif  // SANITIZER_MAC
46
47#endif // SANITIZER_SYMBOLIZER_MAC_H
48