llvm/bolt/include/bolt/Core/BinaryData.h

//===- bolt/Core/BinaryData.h - Objects in a binary file --------*- 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 contains the declaration of the BinaryData class, which represents
// an allocatable entity in a binary file, such as a data object, a jump table,
// or a function.
//
//===----------------------------------------------------------------------===//

#ifndef BOLT_CORE_BINARY_DATA_H
#define BOLT_CORE_BINARY_DATA_H

#include "llvm/ADT/Twine.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/Support/raw_ostream.h"
#include <string>
#include <vector>

namespace llvm {
namespace bolt {

class BinarySection;

/// \p BinaryData represents an indivisible part of a data section section.
/// BinaryData's may contain sub-components, e.g. jump tables but they are
/// considered to be part of the parent symbol in terms of divisibility and
/// reordering.
class BinaryData {};

inline raw_ostream &operator<<(raw_ostream &OS, const BinaryData &BD) {}

/// Address access info used for memory profiling.
struct AddressAccess {};

/// Aggregated memory access info per instruction.
struct MemoryAccessProfile {};

inline raw_ostream &operator<<(raw_ostream &OS,
                               const bolt::MemoryAccessProfile &MAP) {}

} // namespace bolt
} // namespace llvm

#endif