#include "sanitizer_common.h"
#include "sanitizer_file.h"
#include "sanitizer_flags.h"
#include "sanitizer_procmaps.h"
#include "sanitizer_report_decorator.h"
#include "sanitizer_stacktrace.h"
#include "sanitizer_stacktrace_printer.h"
#include "sanitizer_symbolizer.h"
#if SANITIZER_POSIX
# include "sanitizer_posix.h"
# include <sys/mman.h>
#endif
namespace __sanitizer {
#if !SANITIZER_GO
static bool FrameIsInternal(const SymbolizedStack *frame) { … }
const SymbolizedStack *SkipInternalFrames(const SymbolizedStack *frames) { … }
void ReportErrorSummary(const char *error_type, const AddressInfo &info,
const char *alt_tool_name) { … }
#endif
#if !SANITIZER_FUCHSIA
bool ReportFile::SupportsColors() { … }
static inline bool ReportSupportsColors() { … }
#else
static inline bool ReportSupportsColors() { return true; }
#endif
bool ColorizeReports() { … }
void ReportErrorSummary(const char *error_type, const StackTrace *stack,
const char *alt_tool_name) { … }
void ReportMmapWriteExec(int prot, int flags) { … }
#if !SANITIZER_FUCHSIA && !SANITIZER_GO
void StartReportDeadlySignal() { … }
static void MaybeReportNonExecRegion(uptr pc) { … }
static void PrintMemoryByte(InternalScopedString *str, const char *before,
u8 byte) { … }
static void MaybeDumpInstructionBytes(uptr pc) { … }
static void MaybeDumpRegisters(void *context) { … }
static void ReportStackOverflowImpl(const SignalContext &sig, u32 tid,
UnwindSignalStackCallbackType unwind,
const void *unwind_context) { … }
static void ReportDeadlySignalImpl(const SignalContext &sig, u32 tid,
UnwindSignalStackCallbackType unwind,
const void *unwind_context) { … }
void ReportDeadlySignal(const SignalContext &sig, u32 tid,
UnwindSignalStackCallbackType unwind,
const void *unwind_context) { … }
void HandleDeadlySignal(void *siginfo, void *context, u32 tid,
UnwindSignalStackCallbackType unwind,
const void *unwind_context) { … }
#endif
atomic_uintptr_t ScopedErrorReportLock::reporting_thread_ = …;
StaticSpinMutex ScopedErrorReportLock::mutex_;
void ScopedErrorReportLock::Lock() { … }
void ScopedErrorReportLock::Unlock() { … }
void ScopedErrorReportLock::CheckLocked() { … }
}