xref: /llvm-project/compiler-rt/lib/rtsan/rtsan_diagnostics.h (revision 7c41b5ccdcf0f5de1b9b254693635283faff3658)
1ce0c41cbSdavidtrevelyan //===--- rtsan_diagnostics.h - Realtime Sanitizer ---------------*- C++ -*-===//
2ce0c41cbSdavidtrevelyan //
3ce0c41cbSdavidtrevelyan // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4ce0c41cbSdavidtrevelyan // See https://llvm.org/LICENSE.txt for license information.
5ce0c41cbSdavidtrevelyan // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6ce0c41cbSdavidtrevelyan //
7ce0c41cbSdavidtrevelyan //===----------------------------------------------------------------------===//
8ce0c41cbSdavidtrevelyan //
9ce0c41cbSdavidtrevelyan // Part of the RealtimeSanitizer runtime library
10ce0c41cbSdavidtrevelyan //
11ce0c41cbSdavidtrevelyan //===----------------------------------------------------------------------===//
12ce0c41cbSdavidtrevelyan 
13ce0c41cbSdavidtrevelyan #pragma once
14ce0c41cbSdavidtrevelyan 
151b601938SChris Apple #include "sanitizer_common/sanitizer_common.h"
16ce0c41cbSdavidtrevelyan #include "sanitizer_common/sanitizer_internal_defs.h"
17ce0c41cbSdavidtrevelyan 
18ce0c41cbSdavidtrevelyan namespace __rtsan {
191b601938SChris Apple 
20216e1b90Sdavidtrevelyan enum class DiagnosticsInfoType {
21216e1b90Sdavidtrevelyan   InterceptedCall,
22216e1b90Sdavidtrevelyan   BlockingCall,
231b601938SChris Apple };
241b601938SChris Apple 
251b601938SChris Apple struct DiagnosticsInfo {
26216e1b90Sdavidtrevelyan   DiagnosticsInfoType type;
27216e1b90Sdavidtrevelyan   const char *func_name;
281b601938SChris Apple   __sanitizer::uptr pc;
291b601938SChris Apple   __sanitizer::uptr bp;
301b601938SChris Apple };
311b601938SChris Apple 
321b601938SChris Apple void PrintDiagnostics(const DiagnosticsInfo &info);
33*7c41b5ccSChris Apple void PrintErrorSummary(const DiagnosticsInfo &info,
34*7c41b5ccSChris Apple                        const __sanitizer::BufferedStackTrace &stack);
35ce0c41cbSdavidtrevelyan } // namespace __rtsan
36