#include "sanitizer_stack_store.h"
#include "sanitizer_atomic.h"
#include "sanitizer_common.h"
#include "sanitizer_internal_defs.h"
#include "sanitizer_leb128.h"
#include "sanitizer_lzw.h"
#include "sanitizer_placement_new.h"
#include "sanitizer_stacktrace.h"
namespace __sanitizer {
namespace {
struct StackTraceHeader { … };
}
StackStore::Id StackStore::Store(const StackTrace &trace, uptr *pack) { … }
StackTrace StackStore::Load(Id id) { … }
uptr StackStore::Allocated() const { … }
uptr *StackStore::Alloc(uptr count, uptr *idx, uptr *pack) { … }
void *StackStore::Map(uptr size, const char *mem_type) { … }
void StackStore::Unmap(void *addr, uptr size) { … }
uptr StackStore::Pack(Compression type) { … }
void StackStore::LockAll() { … }
void StackStore::UnlockAll() { … }
void StackStore::TestOnlyUnmap() { … }
uptr *StackStore::BlockInfo::Get() const { … }
uptr *StackStore::BlockInfo::Create(StackStore *store) { … }
uptr *StackStore::BlockInfo::GetOrCreate(StackStore *store) { … }
class SLeb128Encoder { … };
class SLeb128Decoder { … };
static u8 *CompressDelta(const uptr *from, const uptr *from_end, u8 *to,
u8 *to_end) { … }
static uptr *UncompressDelta(const u8 *from, const u8 *from_end, uptr *to,
uptr *to_end) { … }
static u8 *CompressLzw(const uptr *from, const uptr *from_end, u8 *to,
u8 *to_end) { … }
static uptr *UncompressLzw(const u8 *from, const u8 *from_end, uptr *to,
uptr *to_end) { … }
#if defined(_MSC_VER) && !defined(__clang__)
# pragma warning(push)
# pragma warning(disable : 4200)
#endif
namespace {
struct PackedHeader { … };
}
#if defined(_MSC_VER) && !defined(__clang__)
# pragma warning(pop)
#endif
uptr *StackStore::BlockInfo::GetOrUnpack(StackStore *store) { … }
uptr StackStore::BlockInfo::Pack(Compression type, StackStore *store) { … }
void StackStore::BlockInfo::TestOnlyUnmap(StackStore *store) { … }
bool StackStore::BlockInfo::Stored(uptr n) { … }
bool StackStore::BlockInfo::IsPacked() const { … }
}