forked from OSchip/llvm-project
56 lines
1.7 KiB
C
56 lines
1.7 KiB
C
|
//===-- hwasan_allocator.h ----------------------------------------*- C++ -*-===//
|
||
|
//
|
||
|
// The LLVM Compiler Infrastructure
|
||
|
//
|
||
|
// This file is distributed under the University of Illinois Open Source
|
||
|
// License. See LICENSE.TXT for details.
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
//
|
||
|
// This file is a part of HWAddressSanitizer.
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
|
||
|
#ifndef HWASAN_ALLOCATOR_H
|
||
|
#define HWASAN_ALLOCATOR_H
|
||
|
|
||
|
#include "sanitizer_common/sanitizer_common.h"
|
||
|
|
||
|
namespace __hwasan {
|
||
|
|
||
|
struct HwasanThreadLocalMallocStorage {
|
||
|
uptr quarantine_cache[16];
|
||
|
// Allocator cache contains atomic_uint64_t which must be 8-byte aligned.
|
||
|
ALIGNED(8) uptr allocator_cache[96 * (512 * 8 + 16)]; // Opaque.
|
||
|
void CommitBack();
|
||
|
|
||
|
private:
|
||
|
// These objects are allocated via mmap() and are zero-initialized.
|
||
|
HwasanThreadLocalMallocStorage() {}
|
||
|
};
|
||
|
|
||
|
struct Metadata;
|
||
|
|
||
|
class HwasanChunkView {
|
||
|
public:
|
||
|
HwasanChunkView() : block_(0), metadata_(nullptr) {}
|
||
|
HwasanChunkView(uptr block, Metadata *metadata)
|
||
|
: block_(block), metadata_(metadata) {}
|
||
|
bool IsValid() const; // Checks if it points to a valid allocated chunk
|
||
|
bool IsAllocated() const; // Checks if the memory is currently allocated
|
||
|
uptr Beg() const; // First byte of user memory
|
||
|
uptr End() const; // Last byte of user memory
|
||
|
uptr UsedSize() const; // Size requested by the user
|
||
|
u32 GetAllocStackId() const;
|
||
|
u32 GetFreeStackId() const;
|
||
|
private:
|
||
|
uptr block_;
|
||
|
Metadata *const metadata_;
|
||
|
};
|
||
|
|
||
|
HwasanChunkView FindHeapChunkByAddress(uptr address);
|
||
|
|
||
|
} // namespace __hwasan
|
||
|
|
||
|
#endif // HWASAN_ALLOCATOR_H
|