wrappers_c.cpp revision 360784
1//===-- wrappers_c.cpp ------------------------------------------*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8 9#include "platform.h" 10 11// Skip this compilation unit if compiled as part of Bionic. 12#if !SCUDO_ANDROID || !_BIONIC 13 14#include "allocator_config.h" 15#include "wrappers_c.h" 16#include "wrappers_c_checks.h" 17 18#include <stdint.h> 19#include <stdio.h> 20 21#define SCUDO_PREFIX(name) name 22#define SCUDO_ALLOCATOR Allocator 23 24extern "C" void SCUDO_PREFIX(malloc_postinit)(); 25static scudo::Allocator<scudo::Config, SCUDO_PREFIX(malloc_postinit)> 26 SCUDO_ALLOCATOR; 27// Pointer to the static allocator so that the C++ wrappers can access it. 28// Technically we could have a completely separated heap for C & C++ but in 29// reality the amount of cross pollination between the two is staggering. 30scudo::Allocator<scudo::Config, SCUDO_PREFIX(malloc_postinit)> * 31 CONCATENATE(SCUDO_ALLOCATOR, Ptr) = &SCUDO_ALLOCATOR; 32 33#include "wrappers_c.inc" 34 35#undef SCUDO_ALLOCATOR 36#undef SCUDO_PREFIX 37 38extern "C" INTERFACE void __scudo_print_stats(void) { Allocator.printStats(); } 39 40#endif // !SCUDO_ANDROID || !_BIONIC 41