Viewing file: DWARFFile.h (1.73 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
//===- DWARFFile.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_DWARFFILE_H #define LLVM_DWARFLINKER_DWARFFILE_H
#include "AddressesMap.h" #include "llvm/ADT/StringRef.h" #include "llvm/DebugInfo/DWARF/DWARFContext.h" #include <functional> #include <memory>
namespace llvm { namespace dwarf_linker {
/// This class represents DWARF information for source file /// and it's address map. /// /// May be used asynchroniously for reading. class DWARFFile { public: using UnloadCallbackTy = std::function<void(StringRef FileName)>;
DWARFFile(StringRef Name, std::unique_ptr<DWARFContext> Dwarf, std::unique_ptr<AddressesMap> Addresses, UnloadCallbackTy UnloadFunc = nullptr) : FileName(Name), Dwarf(std::move(Dwarf)), Addresses(std::move(Addresses)), UnloadFunc(UnloadFunc) {}
/// Object file name. StringRef FileName;
/// Source DWARF information. std::unique_ptr<DWARFContext> Dwarf;
/// Helpful address information(list of valid address ranges, relocations). std::unique_ptr<AddressesMap> Addresses;
/// Callback to the module keeping object file to unload. UnloadCallbackTy UnloadFunc;
/// Unloads object file and corresponding AddressesMap and Dwarf Context. void unload() { Addresses.reset(); Dwarf.reset();
if (UnloadFunc) UnloadFunc(FileName); } };
} // namespace dwarf_linker } // end namespace llvm
#endif // LLVM_DWARFLINKER_DWARFFILE_H
|