//===- 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