//===- Memory.cpp - Memory Handling Support ---------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This file defines some helpful functions for allocating memory and dealing
// with memory mapped files
//
//===----------------------------------------------------------------------===//

#include "llvm/Support/Memory.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/Support/Valgrind.h"

#ifndef NDEBUG
#include "llvm/Support/raw_ostream.h"
#endif // ifndef NDEBUG

// Include the platform-specific parts of this class.
#ifdef LLVM_ON_UNIX
#include "Unix/Memory.inc"
#endif
#ifdef _WIN32
#include "Windows/Memory.inc"
#endif

#ifndef NDEBUG

namespace llvm {
namespace sys {

raw_ostream &operator<<(raw_ostream &OS, const Memory::ProtectionFlags &PF) {
  assert((PF & ~(Memory::MF_READ | Memory::MF_WRITE | Memory::MF_EXEC)) == 0 &&
         "Unrecognized flags");

  return OS << (PF & Memory::MF_READ ? 'R' : '-')
            << (PF & Memory::MF_WRITE ? 'W' : '-')
            << (PF & Memory::MF_EXEC ? 'X' : '-');
}

raw_ostream &operator<<(raw_ostream &OS, const MemoryBlock &MB) {
  return OS << "[ " << MB.base() << " .. "
            << (void *)((char *)MB.base() + MB.size()) << " ] (" << MB.size()
            << " bytes)";
}

} // end namespace sys
} // end namespace llvm

#endif // ifndef NDEBUG
