blob: 0ddd00dee53041474307ea7497d4e4ea275a3e9e [file] [log] [blame]
// Copyright 2023 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <lib/zircon-internal/unique-backtrace.h>
#include <zircon/compiler.h>
// This file contains stubs for the allocator API entry points in the libc ABI.
// libc.so can be dynamically linked against a shared library that provides the
// actual allocator implementations. These need to be provided so there won't be
// any dangling references in libc at startup time. Weak definitions will be
// replaced with external definitions in the final phase of dynamic linking, so
// these functions won't be called at all.
#define TRAP_STUB(name) \
__EXPORT __WEAK void name(void) { CRASH_WITH_UNIQUE_BACKTRACE(); }
extern "C" {
__WEAK __attribute__((visibility("hidden"))) void __libc_init_gwp_asan(void) {}
// Although this isn't a common allocator function, this is expected in the libc.ifs file.
void __scudo_print_stats(void) { CRASH_WITH_UNIQUE_BACKTRACE(); }
TRAP_STUB(aligned_alloc)
TRAP_STUB(calloc)
TRAP_STUB(malloc)
TRAP_STUB(realloc)
TRAP_STUB(memalign)
TRAP_STUB(posix_memalign)
TRAP_STUB(pvalloc)
TRAP_STUB(valloc)
TRAP_STUB(free)
TRAP_STUB(malloc_disable)
TRAP_STUB(malloc_disable_memory_tagging)
TRAP_STUB(malloc_enable)
TRAP_STUB(malloc_info)
TRAP_STUB(malloc_iterate)
TRAP_STUB(malloc_set_add_large_allocation_slack)
TRAP_STUB(malloc_set_pattern_fill_contents)
TRAP_STUB(malloc_set_track_allocation_stacks)
TRAP_STUB(malloc_set_zero_contents)
TRAP_STUB(malloc_usable_size)
TRAP_STUB(mallopt)
TRAP_STUB(mallinfo)
TRAP_STUB(mallinfo2)
} // extern "C"