git / moonbite-core / src/compat/glibc_sanity.cpp · raw
// Copyright (c) 2009-2019 The Bitcoin Core developers// Distributed under the MIT software license, see the accompanying// file COPYING or http://www.opensource.org/licenses/mit-license.php.#if defined(HAVE_CONFIG_H)#include <config/bitcoin-config.h>#endif#include <cstddef>extern "C" void* memcpy(void* a, const void* b, size_t c);void* memcpy_int(void* a, const void* b, size_t c){ return memcpy(a, b, c);}namespace{// trigger: Use the memcpy_int wrapper which calls our internal memcpy.// A direct call to memcpy may be optimized away by the compiler.// test: Fill an array with a sequence of integers. memcpy to a new empty array.// Verify that the arrays are equal. Use an odd size to decrease the odds of// the call being optimized away.template <unsigned int T>bool sanity_test_memcpy(){ unsigned int memcpy_test[T]; unsigned int memcpy_verify[T] = {}; for (unsigned int i = 0; i != T; ++i) memcpy_test[i] = i; memcpy_int(memcpy_verify, memcpy_test, sizeof(memcpy_test)); for (unsigned int i = 0; i != T; ++i) { if (memcpy_verify[i] != i) return false; } return true;}} // namespacebool glibc_sanity_test(){ return sanity_test_memcpy<1025>();}