#ifndef ASAN_DESCRIPTIONS_H
#define ASAN_DESCRIPTIONS_H
#include "asan_allocator.h"
#include "asan_thread.h"
#include "sanitizer_common/sanitizer_common.h"
#include "sanitizer_common/sanitizer_report_decorator.h"
namespace __asan {
void DescribeThread(AsanThreadContext *context);
static inline void DescribeThread(AsanThread *t) { … }
class AsanThreadIdAndName { … };
class Decorator : public __sanitizer::SanitizerCommonDecorator { … };
enum ShadowKind : u8 { … };
static const char *const ShadowNames[] = …;
struct ShadowAddressDescription { … };
bool GetShadowAddressInformation(uptr addr, ShadowAddressDescription *descr);
bool DescribeAddressIfShadow(uptr addr);
enum AccessType { … };
struct ChunkAccess { … };
struct HeapAddressDescription { … };
bool GetHeapAddressInformation(uptr addr, uptr access_size,
HeapAddressDescription *descr);
bool DescribeAddressIfHeap(uptr addr, uptr access_size = 1);
struct StackAddressDescription { … };
bool GetStackAddressInformation(uptr addr, uptr access_size,
StackAddressDescription *descr);
struct WildAddressDescription { … };
struct GlobalAddressDescription { … };
bool GetGlobalAddressInformation(uptr addr, uptr access_size,
GlobalAddressDescription *descr);
bool DescribeAddressIfGlobal(uptr addr, uptr access_size, const char *bug_type);
void PrintAddressDescription(uptr addr, uptr access_size = 1,
const char *bug_type = "");
enum AddressKind { … };
class AddressDescription { … };
}
#endif