//===- bolt/Core/Exceptions.h - Helpers for C++ exceptions ------*- 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 declarations of classes for handling C++ exception info. // //===----------------------------------------------------------------------===// #ifndef BOLT_CORE_EXCEPTIONS_H #define BOLT_CORE_EXCEPTIONS_H #include "llvm/ADT/DenseMap.h" #include "llvm/DebugInfo/DWARF/DWARFDataExtractor.h" #include "llvm/Support/Error.h" #include <cstdint> #include <map> #include <vector> namespace llvm { class DWARFDebugFrame; namespace dwarf { class FDE; } // namespace dwarf namespace bolt { class BinaryContext; class BinaryFunction; /// \brief Wraps up information to read all CFI instructions and feed them to a /// BinaryFunction, as well as rewriting CFI sections. class CFIReaderWriter { … }; /// Parse an existing .eh_frame and invoke the callback for each /// address that needs to be fixed if we want to preserve the original /// .eh_frame while changing code location. /// This code is based on DWARFDebugFrame::parse(), but trimmed down to /// parse only the structures that have address references. class EHFrameParser { … }; } // namespace bolt } // namespace llvm #endif