diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2020-07-26 19:36:28 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2020-07-26 19:36:28 +0000 |
commit | cfca06d7963fa0909f90483b42a6d7d194d01e08 (patch) | |
tree | 209fb2a2d68f8f277793fc8df46c753d31bc853b /llvm/lib/Object/TapiUniversal.cpp | |
parent | 706b4fc47bbc608932d3b491ae19a3b9cde9497b (diff) |
Notes
Diffstat (limited to 'llvm/lib/Object/TapiUniversal.cpp')
-rw-r--r-- | llvm/lib/Object/TapiUniversal.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/llvm/lib/Object/TapiUniversal.cpp b/llvm/lib/Object/TapiUniversal.cpp index b3273e345a61..48cb949cb6f4 100644 --- a/llvm/lib/Object/TapiUniversal.cpp +++ b/llvm/lib/Object/TapiUniversal.cpp @@ -22,7 +22,7 @@ using namespace object; TapiUniversal::TapiUniversal(MemoryBufferRef Source, Error &Err) : Binary(ID_TapiUniversal, Source) { - auto Result = TextAPIReader::get(Source); + Expected<std::unique_ptr<InterfaceFile>> Result = TextAPIReader::get(Source); ErrorAsOutParameter ErrAsOuParam(&Err); if (!Result) { Err = Result.takeError(); @@ -30,9 +30,16 @@ TapiUniversal::TapiUniversal(MemoryBufferRef Source, Error &Err) } ParsedFile = std::move(Result.get()); - auto Archs = ParsedFile->getArchitectures(); - for (auto Arch : Archs) - Architectures.emplace_back(Arch); + auto FlattenObjectInfo = [this](const auto &File) { + StringRef Name = File->getInstallName(); + for (const Architecture Arch : File->getArchitectures()) + Libraries.emplace_back(Library({Name, Arch})); + }; + + FlattenObjectInfo(ParsedFile); + // Get inlined documents from tapi file. + for (const std::shared_ptr<InterfaceFile> &File : ParsedFile->documents()) + FlattenObjectInfo(File); } TapiUniversal::~TapiUniversal() = default; @@ -41,7 +48,7 @@ Expected<std::unique_ptr<TapiFile>> TapiUniversal::ObjectForArch::getAsObjectFile() const { return std::unique_ptr<TapiFile>(new TapiFile(Parent->getMemoryBufferRef(), *Parent->ParsedFile.get(), - Parent->Architectures[Index])); + Parent->Libraries[Index].Arch)); } Expected<std::unique_ptr<TapiUniversal>> |