// ---------------------- Interface ---------------- {{{1
using namespace __asan;
-const void *AllocationBegin(const void *p) {
+static const void *AllocationBegin(const void *p) {
AsanChunk *m = __asan::instance.GetAsanChunkByAddr((uptr)p);
if (!m)
return nullptr;
return DFsanAllocate(nmemb * size, sizeof(u64), true /*zeroise*/);
}
-const void *AllocationBegin(const void *p) {
+static const void *AllocationBegin(const void *p) {
if (!p)
return nullptr;
void *beg = allocator.GetBlockBegin(p);
return HwasanChunkView(reinterpret_cast<uptr>(block), metadata);
}
-const void *AllocationBegin(const void *p) {
+static const void *AllocationBegin(const void *p) {
const void *untagged_ptr = UntagPtr(p);
if (!untagged_ptr)
return nullptr;
*end = *begin + sizeof(AllocatorCache);
}
-const void *GetMallocBegin(const void *p) {
+static const void *GetMallocBegin(const void *p) {
if (!p)
return nullptr;
void *beg = allocator.GetBlockBegin(p);
return 0;
}
-const void *memprof_malloc_begin(const void *p) {
+static const void *memprof_malloc_begin(const void *p) {
u64 user_requested_size;
MemprofChunk *m =
instance.GetMemprofChunkByAddr((uptr)p, user_requested_size);
return MsanAllocate(stack, nmemb * size, sizeof(u64), true);
}
-const void *AllocationBegin(const void *p) {
+static const void *AllocationBegin(const void *p) {
if (!p)
return nullptr;
void *beg = allocator.GetBlockBegin(p);
return SetErrnoOnNull(user_alloc_internal(thr, pc, sz, PageSize));
}
-const void *user_alloc_begin(const void *p) {
+static const void *user_alloc_begin(const void *p) {
if (p == nullptr || !IsAppMem((uptr)p))
return nullptr;
void *beg = allocator()->GetBlockBegin(p);