From 4fd11c1e456ef36ce7c49c51c9daef6d0ffd8cbc Mon Sep 17 00:00:00 2001 From: Alexander Shaposhnikov Date: Thu, 19 Sep 2019 00:02:12 +0000 Subject: [Object] Extend MachOUniversalBinary::getObjectForArch Make the method MachOUniversalBinary::getObjectForArch return MachOUniversalBinary::ObjectForArch and add helper methods MachOUniversalBinary::getMachOObjectForArch, MachOUniversalBinary::getArchiveForArch for those who explicitly expect to get a MachOObjectFile or an Archive. Differential revision: https://reviews.llvm.org/D67700 Test plan: make check-all llvm-svn: 372278 --- llvm/lib/Object/MachOUniversal.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'llvm/lib/Object/MachOUniversal.cpp') diff --git a/llvm/lib/Object/MachOUniversal.cpp b/llvm/lib/Object/MachOUniversal.cpp index 8b5cd0518a5..3e5be913c25 100644 --- a/llvm/lib/Object/MachOUniversal.cpp +++ b/llvm/lib/Object/MachOUniversal.cpp @@ -210,19 +210,34 @@ MachOUniversalBinary::MachOUniversalBinary(MemoryBufferRef Source, Error &Err) Err = Error::success(); } -Expected> +Expected MachOUniversalBinary::getObjectForArch(StringRef ArchName) const { if (Triple(ArchName).getArch() == Triple::ArchType::UnknownArch) return make_error("Unknown architecture " "named: " + ArchName, object_error::arch_not_found); - - for (auto &Obj : objects()) + for (const auto &Obj : objects()) if (Obj.getArchFlagName() == ArchName) - return Obj.getAsObjectFile(); + return Obj; return make_error("fat file does not " "contain " + ArchName, object_error::arch_not_found); } + +Expected> +MachOUniversalBinary::getMachOObjectForArch(StringRef ArchName) const { + Expected O = getObjectForArch(ArchName); + if (!O) + return O.takeError(); + return O->getAsObjectFile(); +} + +Expected> +MachOUniversalBinary::getArchiveForArch(StringRef ArchName) const { + Expected O = getObjectForArch(ArchName); + if (!O) + return O.takeError(); + return O->getAsArchive(); +} -- cgit v1.2.3