//===- DWARFLinkerCompileUnit.h ---------------------------------*- 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 // //===----------------------------------------------------------------------===// #ifndef LLVM_DWARFLINKER_CLASSIC_DWARFLINKERCOMPILEUNIT_H #define LLVM_DWARFLINKER_CLASSIC_DWARFLINKERCOMPILEUNIT_H #include "llvm/ADT/AddressRanges.h" #include "llvm/ADT/DenseMap.h" #include "llvm/CodeGen/DIE.h" #include "llvm/DebugInfo/DWARF/DWARFUnit.h" #include <optional> namespace llvm { namespace dwarf_linker { namespace classic { class DeclContext; /// Mapped value in the address map is the offset to apply to the /// linked address. RangesTy; // This structure keeps patch for the attribute and, optionally, // the value of relocation which should be applied. Currently, // only location attribute needs to have relocation: either to the // function ranges if location attribute is of type 'loclist', // either to the operand of DW_OP_addr/DW_OP_addrx if location attribute // is of type 'exprloc'. // ASSUMPTION: Location attributes of 'loclist' type containing 'exprloc' // with address expression operands are not supported yet. struct PatchLocation { … }; RngListAttributesTy; LocListAttributesTy; /// Stores all information relating to a compile unit, be it in its original /// instance in the object file to its brand new cloned and generated DIE tree. class CompileUnit { … }; } // end of namespace classic } // end of namespace dwarf_linker } // end of namespace llvm #endif // LLVM_DWARFLINKER_CLASSIC_DWARFLINKERCOMPILEUNIT_H