Viewing file: DWARFFile.h (2.26 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_DWARFLINKERPARALLEL_DWARFFILE_H #define LLVM_DWARFLINKERPARALLEL_DWARFFILE_H
#include "llvm/ADT/StringRef.h" #include "llvm/DWARFLinkerParallel/AddressesMap.h" #include "llvm/DebugInfo/DWARF/DWARFContext.h" #include "llvm/Support/Endian.h" #include <functional> #include <memory>
namespace llvm { namespace dwarflinker_parallel {
/// 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, const std::vector<std::string> &Warnings, UnloadCallbackTy UnloadFunc = nullptr) : FileName(Name), Dwarf(std::move(Dwarf)), Addresses(std::move(Addresses)), Warnings(Warnings), UnloadFunc(UnloadFunc) { if (this->Dwarf) Endianess = this->Dwarf->isLittleEndian() ? support::endianness::little : support::endianness::big; }
/// 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;
/// Warnings for object file. const std::vector<std::string> &Warnings;
/// Endiannes of source DWARF information. support::endianness Endianess = support::endianness::little;
/// 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); } };
} // end namespace dwarflinker_parallel } // end namespace llvm
#endif // LLVM_DWARFLINKERPARALLEL_DWARFFILE_H
|