diff options
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>> |