Skip to content

Commit 8a5aa10

Browse files
authored
Revert "[llvm-ar] Use COFF archive format for COFF targets." (#82889)
Reverts #82642 for lld/test/ELF/invalid/Output/data-encoding.test.tmp.a failures on Windows.
1 parent cf9201c commit 8a5aa10

File tree

5 files changed

+15
-114
lines changed

5 files changed

+15
-114
lines changed

llvm/include/llvm/Object/Archive.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,6 @@ class Archive : public Binary {
339339
Kind kind() const { return (Kind)Format; }
340340
bool isThin() const { return IsThin; }
341341
static object::Archive::Kind getDefaultKindForHost();
342-
static object::Archive::Kind getDefaultKindForTriple(Triple &T);
343342

344343
child_iterator child_begin(Error &Err, bool SkipInternal = true) const;
345344
child_iterator child_end() const;

llvm/lib/Object/Archive.cpp

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -969,19 +969,12 @@ Archive::Archive(MemoryBufferRef Source, Error &Err)
969969
Err = Error::success();
970970
}
971971

972-
object::Archive::Kind Archive::getDefaultKindForTriple(Triple &T) {
973-
if (T.isOSDarwin())
974-
return object::Archive::K_DARWIN;
975-
if (T.isOSAIX())
976-
return object::Archive::K_AIXBIG;
977-
if (T.isOSWindows())
978-
return object::Archive::K_COFF;
979-
return object::Archive::K_GNU;
980-
}
981-
982972
object::Archive::Kind Archive::getDefaultKindForHost() {
983973
Triple HostTriple(sys::getProcessTriple());
984-
return getDefaultKindForTriple(HostTriple);
974+
return HostTriple.isOSDarwin()
975+
? object::Archive::K_DARWIN
976+
: (HostTriple.isOSAIX() ? object::Archive::K_AIXBIG
977+
: object::Archive::K_GNU);
985978
}
986979

987980
Archive::child_iterator Archive::child_begin(Error &Err,

llvm/lib/Object/ArchiveWriter.cpp

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,12 @@ object::Archive::Kind NewArchiveMember::detectKindFromObject() const {
6262
Expected<std::unique_ptr<object::ObjectFile>> OptionalObject =
6363
object::ObjectFile::createObjectFile(MemBufferRef);
6464

65-
if (OptionalObject) {
66-
if (isa<object::MachOObjectFile>(**OptionalObject))
67-
return object::Archive::K_DARWIN;
68-
if (isa<object::XCOFFObjectFile>(**OptionalObject))
69-
return object::Archive::K_AIXBIG;
70-
if (isa<object::COFFObjectFile>(**OptionalObject) ||
71-
isa<object::COFFImportFile>(**OptionalObject))
72-
return object::Archive::K_COFF;
73-
return object::Archive::K_GNU;
74-
}
65+
if (OptionalObject)
66+
return isa<object::MachOObjectFile>(**OptionalObject)
67+
? object::Archive::K_DARWIN
68+
: (isa<object::XCOFFObjectFile>(**OptionalObject)
69+
? object::Archive::K_AIXBIG
70+
: object::Archive::K_GNU);
7571

7672
// Squelch the error in case we had a non-object file.
7773
consumeError(OptionalObject.takeError());
@@ -84,7 +80,10 @@ object::Archive::Kind NewArchiveMember::detectKindFromObject() const {
8480
MemBufferRef, file_magic::bitcode, &Context)) {
8581
auto &IRObject = cast<object::IRObjectFile>(**ObjOrErr);
8682
auto TargetTriple = Triple(IRObject.getTargetTriple());
87-
return object::Archive::getDefaultKindForTriple(TargetTriple);
83+
return TargetTriple.isOSDarwin()
84+
? object::Archive::K_DARWIN
85+
: (TargetTriple.isOSAIX() ? object::Archive::K_AIXBIG
86+
: object::Archive::K_GNU);
8887
} else {
8988
// Squelch the error in case this was not a SymbolicFile.
9089
consumeError(ObjOrErr.takeError());

llvm/test/tools/llvm-ar/coff-symtab.test

Lines changed: 0 additions & 85 deletions
This file was deleted.

llvm/tools/llvm-ar/llvm-ar.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ static void printArHelp(StringRef ToolName) {
8282
=darwin - darwin
8383
=bsd - bsd
8484
=bigarchive - big archive (AIX OS)
85-
=coff - coff
8685
--plugin=<string> - ignored for compatibility
8786
-h --help - display this help and exit
8887
--output - the directory to extract archive members to
@@ -194,7 +193,7 @@ static SmallVector<const char *, 256> PositionalArgs;
194193
static bool MRI;
195194

196195
namespace {
197-
enum Format { Default, GNU, COFF, BSD, DARWIN, BIGARCHIVE, Unknown };
196+
enum Format { Default, GNU, BSD, DARWIN, BIGARCHIVE, Unknown };
198197
}
199198

200199
static Format FormatType = Default;
@@ -1045,9 +1044,6 @@ static void performWriteOperation(ArchiveOperation Operation,
10451044
case GNU:
10461045
Kind = object::Archive::K_GNU;
10471046
break;
1048-
case COFF:
1049-
Kind = object::Archive::K_COFF;
1050-
break;
10511047
case BSD:
10521048
if (Thin)
10531049
fail("only the gnu format has a thin mode");
@@ -1380,7 +1376,6 @@ static int ar_main(int argc, char **argv) {
13801376
.Case("darwin", DARWIN)
13811377
.Case("bsd", BSD)
13821378
.Case("bigarchive", BIGARCHIVE)
1383-
.Case("coff", COFF)
13841379
.Default(Unknown);
13851380
if (FormatType == Unknown)
13861381
fail(std::string("Invalid format ") + Match);

0 commit comments

Comments
 (0)