aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object
diff options
context:
space:
mode:
authorJacek Caban <jacek@codeweavers.com>2024-02-24 17:43:59 +0100
committerGitHub <noreply@github.com>2024-02-24 17:43:59 +0100
commit8a5aa103c52265337b43330e55e05567046f3ede (patch)
treef717565bfb17f97e8d9d5acbe242c37830ac0ea2 /llvm/lib/Object
parentcf9201cfdbc10f4606fc4ca22bf1ccaf5ee841b3 (diff)
downloadllvm-8a5aa103c52265337b43330e55e05567046f3ede.zip
llvm-8a5aa103c52265337b43330e55e05567046f3ede.tar.gz
llvm-8a5aa103c52265337b43330e55e05567046f3ede.tar.bz2
Revert "[llvm-ar] Use COFF archive format for COFF targets." (#82889)
Reverts llvm/llvm-project#82642 for lld/test/ELF/invalid/Output/data-encoding.test.tmp.a failures on Windows.
Diffstat (limited to 'llvm/lib/Object')
-rw-r--r--llvm/lib/Object/Archive.cpp15
-rw-r--r--llvm/lib/Object/ArchiveWriter.cpp21
2 files changed, 14 insertions, 22 deletions
diff --git a/llvm/lib/Object/Archive.cpp b/llvm/lib/Object/Archive.cpp
index d3fdcd9..e447e5b 100644
--- a/llvm/lib/Object/Archive.cpp
+++ b/llvm/lib/Object/Archive.cpp
@@ -969,19 +969,12 @@ Archive::Archive(MemoryBufferRef Source, Error &Err)
Err = Error::success();
}
-object::Archive::Kind Archive::getDefaultKindForTriple(Triple &T) {
- if (T.isOSDarwin())
- return object::Archive::K_DARWIN;
- if (T.isOSAIX())
- return object::Archive::K_AIXBIG;
- if (T.isOSWindows())
- return object::Archive::K_COFF;
- return object::Archive::K_GNU;
-}
-
object::Archive::Kind Archive::getDefaultKindForHost() {
Triple HostTriple(sys::getProcessTriple());
- return getDefaultKindForTriple(HostTriple);
+ return HostTriple.isOSDarwin()
+ ? object::Archive::K_DARWIN
+ : (HostTriple.isOSAIX() ? object::Archive::K_AIXBIG
+ : object::Archive::K_GNU);
}
Archive::child_iterator Archive::child_begin(Error &Err,
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());