X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=include%2Fllvm%2FDebugInfo%2FSymbolize%2FSymbolize.h;h=ec3ae002659cd8dd979bd7f839a46f880738339b;hp=230dc759a97e90c9e33feb0c986a2addd5f34aee;hb=9dcc66e06e5d5a2830a93aad80d5fa1e8343927a;hpb=a2d9f5fdfeb2d6810eefbd6339157da2b217de39 diff --git a/include/llvm/DebugInfo/Symbolize/Symbolize.h b/include/llvm/DebugInfo/Symbolize/Symbolize.h index 230dc759a97..ec3ae002659 100644 --- a/include/llvm/DebugInfo/Symbolize/Symbolize.h +++ b/include/llvm/DebugInfo/Symbolize/Symbolize.h @@ -13,13 +13,9 @@ #ifndef LLVM_DEBUGINFO_SYMBOLIZE_SYMBOLIZE_H #define LLVM_DEBUGINFO_SYMBOLIZE_SYMBOLIZE_H -#include "llvm/ADT/SmallVector.h" -#include "llvm/DebugInfo/DIContext.h" #include "llvm/DebugInfo/Symbolize/SymbolizableModule.h" -#include "llvm/Object/MachOUniversal.h" #include "llvm/Object/ObjectFile.h" #include "llvm/Support/ErrorOr.h" -#include "llvm/Support/MemoryBuffer.h" #include #include #include @@ -63,6 +59,8 @@ public: const SymbolizableModule *ModInfo); private: + // Bundles together object file with code/data and object file with + // corresponding debug info. These objects can be the same. typedef std::pair ObjectPair; ErrorOr @@ -75,30 +73,29 @@ private: const std::string &ArchName); /// \brief Returns pair of pointers to object and debug object. - ErrorOr getOrCreateObjects(const std::string &Path, - const std::string &ArchName); - /// \brief Returns a parsed object file for a given architecture in a - /// universal binary (or the binary itself if it is an object file). - ErrorOr getObjectFileFromBinary(Binary *Bin, - const std::string &ArchName); - - // Owns all the parsed binaries and object files. - SmallVector, 4> ParsedBinariesAndObjects; - SmallVector, 4> MemoryBuffers; - void addOwningBinary(OwningBinary OwningBin) { - std::unique_ptr Bin; - std::unique_ptr MemBuf; - std::tie(Bin, MemBuf) = OwningBin.takeBinary(); - ParsedBinariesAndObjects.push_back(std::move(Bin)); - MemoryBuffers.push_back(std::move(MemBuf)); - } + ErrorOr getOrCreateObjectPair(const std::string &Path, + const std::string &ArchName); + + /// \brief Return a pointer to object file at specified path, for a specified + /// architecture (e.g. if path refers to a Mach-O universal binary, only one + /// object file from it will be returned). + ErrorOr getOrCreateObject(const std::string &Path, + const std::string &ArchName); std::map>> Modules; - std::map, - ErrorOr> ObjectFileForArch; + + /// \brief Contains cached results of getOrCreateObjectPair(). std::map, ErrorOr> ObjectPairForPathArch; + /// \brief Contains parsed binary for each path, or parsing error. + std::map>> BinaryForPath; + + /// \brief Parsed object file for path/architecture pair, where "path" refers + /// to Mach-O universal binary. + std::map, ErrorOr>> + ObjectForUBPathAndArch; + Options Opts; };