|  | // Copyright 2016 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | // Its purpose is to preempt the Libc symbols for malloc/new so they call the | 
|  | // shim layer entry points. | 
|  |  | 
|  | #ifdef BASE_ALLOCATOR_ALLOCATOR_SHIM_OVERRIDE_LIBC_SYMBOLS_H_ | 
|  | #error This header is meant to be included only once by allocator_shim.cc | 
|  | #endif | 
|  | #define BASE_ALLOCATOR_ALLOCATOR_SHIM_OVERRIDE_LIBC_SYMBOLS_H_ | 
|  |  | 
|  | #include <malloc.h> | 
|  |  | 
|  | #include "base/allocator/allocator_shim_internals.h" | 
|  | #include "starboard/memory.h" | 
|  | #include "starboard/types.h" | 
|  |  | 
|  | extern "C" { | 
|  |  | 
|  | SHIM_ALWAYS_EXPORT void* SbMemoryAllocate(size_t size) __THROW { | 
|  | return ShimMalloc(size, nullptr); | 
|  | } | 
|  |  | 
|  | SHIM_ALWAYS_EXPORT void SbMemoryDeallocate(void* ptr) __THROW { | 
|  | ShimFree(ptr, nullptr); | 
|  | } | 
|  |  | 
|  | SHIM_ALWAYS_EXPORT void* SbMemoryReallocate(void* ptr, size_t size) __THROW { | 
|  | return ShimRealloc(ptr, size, nullptr); | 
|  | } | 
|  |  | 
|  | SHIM_ALWAYS_EXPORT void* calloc(size_t n, size_t size) __THROW { | 
|  | return ShimCalloc(n, size, nullptr); | 
|  | } | 
|  |  | 
|  | SHIM_ALWAYS_EXPORT void cfree(void* ptr) __THROW { | 
|  | ShimFree(ptr, nullptr); | 
|  | } | 
|  |  | 
|  | SHIM_ALWAYS_EXPORT void* memalign(size_t align, size_t s) __THROW { | 
|  | return ShimMemalign(align, s, nullptr); | 
|  | } | 
|  |  | 
|  | SHIM_ALWAYS_EXPORT void* valloc(size_t size) __THROW { | 
|  | return ShimValloc(size, nullptr); | 
|  | } | 
|  |  | 
|  | SHIM_ALWAYS_EXPORT void* pvalloc(size_t size) __THROW { | 
|  | return ShimPvalloc(size); | 
|  | } | 
|  |  | 
|  | SHIM_ALWAYS_EXPORT int posix_memalign(void** r, size_t a, size_t s) __THROW { | 
|  | return ShimPosixMemalign(r, a, s); | 
|  | } | 
|  |  | 
|  | // The default dispatch translation unit has to define also the following | 
|  | // symbols (unless they are ultimately routed to the system symbols): | 
|  | //   void malloc_stats(void); | 
|  | //   int mallopt(int, int); | 
|  | //   struct mallinfo mallinfo(void); | 
|  | //   size_t malloc_size(void*); | 
|  | //   size_t malloc_usable_size(const void*); | 
|  |  | 
|  | }  // extern "C" |