Skip to content

Commit

Permalink
Revert "[llvm-ar] Use COFF archive format for COFF targets. (#82642)"
Browse files Browse the repository at this point in the history
This reverts commit cf9201c.
  • Loading branch information
cjacek committed Feb 24, 2024
1 parent cf9201c commit 12573c7
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 114 deletions.
1 change: 0 additions & 1 deletion llvm/include/llvm/Object/Archive.h
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,6 @@ class Archive : public Binary {
Kind kind() const { return (Kind)Format; }
bool isThin() const { return IsThin; }
static object::Archive::Kind getDefaultKindForHost();
static object::Archive::Kind getDefaultKindForTriple(Triple &T);

child_iterator child_begin(Error &Err, bool SkipInternal = true) const;
child_iterator child_end() const;
Expand Down
15 changes: 4 additions & 11 deletions llvm/lib/Object/Archive.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
21 changes: 10 additions & 11 deletions llvm/lib/Object/ArchiveWriter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand All @@ -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());
Expand Down
85 changes: 0 additions & 85 deletions llvm/test/tools/llvm-ar/coff-symtab.test

This file was deleted.

7 changes: 1 addition & 6 deletions llvm/tools/llvm-ar/llvm-ar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ static void printArHelp(StringRef ToolName) {
=darwin - darwin
=bsd - bsd
=bigarchive - big archive (AIX OS)
=coff - coff
--plugin=<string> - ignored for compatibility
-h --help - display this help and exit
--output - the directory to extract archive members to
Expand Down Expand Up @@ -194,7 +193,7 @@ static SmallVector<const char *, 256> PositionalArgs;
static bool MRI;

namespace {
enum Format { Default, GNU, COFF, BSD, DARWIN, BIGARCHIVE, Unknown };
enum Format { Default, GNU, BSD, DARWIN, BIGARCHIVE, Unknown };
}

static Format FormatType = Default;
Expand Down Expand Up @@ -1045,9 +1044,6 @@ static void performWriteOperation(ArchiveOperation Operation,
case GNU:
Kind = object::Archive::K_GNU;
break;
case COFF:
Kind = object::Archive::K_COFF;
break;
case BSD:
if (Thin)
fail("only the gnu format has a thin mode");
Expand Down Expand Up @@ -1380,7 +1376,6 @@ static int ar_main(int argc, char **argv) {
.Case("darwin", DARWIN)
.Case("bsd", BSD)
.Case("bigarchive", BIGARCHIVE)
.Case("coff", COFF)
.Default(Unknown);
if (FormatType == Unknown)
fail(std::string("Invalid format ") + Match);
Expand Down

0 comments on commit 12573c7

Please sign in to comment.