aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/ArchiveWriter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Object/ArchiveWriter.cpp')
-rw-r--r--llvm/lib/Object/ArchiveWriter.cpp21
1 files changed, 10 insertions, 11 deletions
diff --git a/llvm/lib/Object/ArchiveWriter.cpp b/llvm/lib/Object/ArchiveWriter.cpp
index 02f7252..155926a 100644
--- a/llvm/lib/Object/ArchiveWriter.cpp
+++ b/llvm/lib/Object/ArchiveWriter.cpp
@@ -62,16 +62,12 @@ object::Archive::Kind NewArchiveMember::detectKindFromObject() const {
Expected<std::unique_ptr<object::ObjectFile>> OptionalObject =
object::ObjectFile::createObjectFile(MemBufferRef);
- if (OptionalObject) {
- if (isa<object::MachOObjectFile>(**OptionalObject))
- return object::Archive::K_DARWIN;
- if (isa<object::XCOFFObjectFile>(**OptionalObject))
- return object::Archive::K_AIXBIG;
- if (isa<object::COFFObjectFile>(**OptionalObject) ||
- isa<object::COFFImportFile>(**OptionalObject))
- return object::Archive::K_COFF;
- return object::Archive::K_GNU;
- }
+ if (OptionalObject)
+ return isa<object::MachOObjectFile>(**OptionalObject)
+ ? object::Archive::K_DARWIN
+ : (isa<object::XCOFFObjectFile>(**OptionalObject)
+ ? object::Archive::K_AIXBIG
+ : object::Archive::K_GNU);
// Squelch the error in case we had a non-object file.
consumeError(OptionalObject.takeError());
@@ -84,7 +80,10 @@ object::Archive::Kind NewArchiveMember::detectKindFromObject() const {
MemBufferRef, file_magic::bitcode, &Context)) {
auto &IRObject = cast<object::IRObjectFile>(**ObjOrErr);
auto TargetTriple = Triple(IRObject.getTargetTriple());
- return object::Archive::getDefaultKindForTriple(TargetTriple);
+ return TargetTriple.isOSDarwin()
+ ? object::Archive::K_DARWIN
+ : (TargetTriple.isOSAIX() ? object::Archive::K_AIXBIG
+ : object::Archive::K_GNU);
} else {
// Squelch the error in case this was not a SymbolicFile.
consumeError(ObjOrErr.takeError());