// Copyright 2018 The Fuchsia Authors
//
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT

#pragma once

// This is used by libc++'s <new> just for std::abort, ::posix_memalign, and
// ::free.

#include <stdlib.h>

#include <__config>

#define _LIBCPP_UNREACHABLE() __builtin_unreachable()

// This is used by the __libcpp_aligned_alloc inline.  Since it always fails
// that inline will trivially always return nullptr.
inline int posix_memalign(void** ptr, size_t align, size_t size) { return 1; }

// This is used by the __libcpp_aligned_free inline, which won't really ever be
// called.  The kernel does have a real free declared elsewhere.
void free(void* ptr);

_LIBCPP_BEGIN_NAMESPACE_STD

using ::abort;

_LIBCPP_END_NAMESPACE_STD
