1//===-- asan_malloc_local.h -------------------------------------*- C++ -*-===//
2//
3// This file is distributed under the University of Illinois Open Source
4// License. See LICENSE.TXT for details.
5//
6//===----------------------------------------------------------------------===//
7//
8// This file is a part of AddressSanitizer, an address sanity checker.
9//
10// Provide interfaces to check for and handle local pool memory allocation.
11//===----------------------------------------------------------------------===//
12
13#ifndef ASAN_MALLOC_LOCAL_H
14#define ASAN_MALLOC_LOCAL_H
15
16#include "sanitizer_common/sanitizer_platform.h"
17#include "asan_internal.h"
18
19// On RTEMS, we use the local pool to handle memory allocation when the ASan
20// run-time is not up.
21static INLINE bool EarlyMalloc() {
22  return SANITIZER_RTEMS && (!__asan::asan_inited ||
23                             __asan::asan_init_is_running);
24}
25
26void* MemalignFromLocalPool(uptr alignment, uptr size);
27
28#if SANITIZER_RTEMS
29
30bool IsFromLocalPool(const void *ptr);
31
32#define ALLOCATE_FROM_LOCAL_POOL UNLIKELY(EarlyMalloc())
33#define IS_FROM_LOCAL_POOL(ptr) UNLIKELY(IsFromLocalPool(ptr))
34
35#else  // SANITIZER_RTEMS
36
37#define ALLOCATE_FROM_LOCAL_POOL 0
38#define IS_FROM_LOCAL_POOL(ptr) 0
39
40#endif  // SANITIZER_RTEMS
41
42#endif  // ASAN_MALLOC_LOCAL_H
43