Don't treat bitcode files specially in llvm-ar.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 5 Jul 2013 04:19:32 +0000 (04:19 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 5 Jul 2013 04:19:32 +0000 (04:19 +0000)
We really want bitcode files to behave as regular object files in archives, so
we don't need to track that a member is bitcode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185681 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvm-ar/Archive.cpp
tools/llvm-ar/Archive.h
tools/llvm-ar/ArchiveReader.cpp
tools/llvm-ar/ArchiveWriter.cpp
tools/llvm-ar/llvm-ar.cpp

index 8d21481b57bd48dc5d866974c40449c361b1f3a7..179e6e683e2c61287d3e2346d56b4782f9551e9f 100644 (file)
@@ -125,13 +125,6 @@ bool ArchiveMember::replaceWith(StringRef newFile, std::string* ErrMsg) {
       return true;
   }
 
-  // Determine what kind of file it is.
-  if (sys::fs::identify_magic(StringRef(signature, 4)) ==
-      sys::fs::file_magic::bitcode)
-    flags |= BitcodeFlag;
-  else
-    flags &= ~BitcodeFlag;
-
   return false;
 }
 
index 3922e375ae303cdc2eb1e57a733cedb1182b8e9e..977fe62d602152d7f87c0ab6cb18616456620d41 100644 (file)
@@ -52,7 +52,6 @@ class ArchiveMember : public ilist_node<ArchiveMember> {
     enum Flags {
       SVR4SymbolTableFlag = 1,     ///< Member is a SVR4 symbol table
       BSD4SymbolTableFlag = 2,     ///< Member is a BSD4 symbol table
-      BitcodeFlag         = 4,     ///< Member is bitcode
       HasLongFilenameFlag = 8,     ///< Member uses the long filename syntax
       StringTableFlag     = 16     ///< Member is an ar(1) format string table
     };
@@ -121,10 +120,6 @@ class ArchiveMember : public ilist_node<ArchiveMember> {
     /// @brief Determine if this member is the ar(1) string table.
     bool isStringTable() const { return flags&StringTableFlag; }
 
-    /// @returns true iff the archive member is a bitcode file.
-    /// @brief Determine if this member is a bitcode file.
-    bool isBitcode() const { return flags&BitcodeFlag; }
-
     /// Long filenames are an artifact of the ar(1) file format which allows
     /// up to sixteen characters in its header and doesn't allow a path
     /// separator character (/). To avoid this, a "long format" member name is
index 8eba5954561dbc6325515a66d1f3a2d9c686bcf8..4a79a3a81f507616418a9d445deadc74407b9dd9 100644 (file)
@@ -162,13 +162,6 @@ Archive::parseMemberHeader(const char*& At, const char* End, std::string* error)
       break;
   }
 
-  // Determine if this is a bitcode file
-  if (sys::fs::identify_magic(StringRef(At, 4)) ==
-      sys::fs::file_magic::bitcode)
-    flags |= ArchiveMember::BitcodeFlag;
-  else
-    flags &= ~ArchiveMember::BitcodeFlag;
-
   // Instantiate the ArchiveMember to be filled
   ArchiveMember* member = new ArchiveMember(this);
 
index 7dad7e0a4726cfa3b610f973d374369f3f145b83..048748a3c9ca2bd8dbc75e2781bd5582e6bf04b4 100644 (file)
@@ -183,13 +183,6 @@ bool Archive::addFileBefore(StringRef filePath, iterator where,
   sys::fs::file_magic type;
   if (sys::fs::identify_magic(mbr->path, type))
     type = sys::fs::file_magic::unknown;
-  switch (type) {
-    case sys::fs::file_magic::bitcode:
-      flags |= ArchiveMember::BitcodeFlag;
-      break;
-    default:
-      break;
-  }
   mbr->flags = flags;
   members.insert(where,mbr);
   return false;
index 23b3df3d3b2357d6b334b59cdf1841b8716a461e..80bc21ae5cb7ad956864a92b3d7ad492c18351b4 100644 (file)
@@ -99,7 +99,6 @@ bool AddBefore = false;          ///< 'b' modifier
 bool Create = false;             ///< 'c' modifier
 bool TruncateNames = false;      ///< 'f' modifier
 bool InsertBefore = false;       ///< 'i' modifier
-bool DontSkipBitcode = false;    ///< 'k' modifier
 bool UseCount = false;           ///< 'N' modifier
 bool OriginalDates = false;      ///< 'o' modifier
 bool FullPath = false;           ///< 'P' modifier
@@ -219,7 +218,6 @@ ArchiveOperation parseCommandLine() {
     case 'x': ++NumOperations; Operation = Extract; break;
     case 'c': Create = true; break;
     case 'f': TruncateNames = true; break;
-    case 'k': DontSkipBitcode = true; break;
     case 'l': /* accepted but unused */ break;
     case 'o': OriginalDates = true; break;
     case 's': break; // Ignore for now.
@@ -323,8 +321,7 @@ bool doPrint(std::string* ErrMsg) {
         const char* data = reinterpret_cast<const char*>(I->getData());
 
         // Skip things that don't make sense to print
-        if (I->isSVR4SymbolTable() ||
-            I->isBSD4SymbolTable() || (!DontSkipBitcode && I->isBitcode()))
+        if (I->isSVR4SymbolTable() || I->isBSD4SymbolTable())
           continue;
 
         if (Verbose)
@@ -373,10 +370,7 @@ doDisplayTable(std::string* ErrMsg) {
       if (Verbose) {
         // FIXME: Output should be this format:
         // Zrw-r--r--  500/ 500    525 Nov  8 17:42 2004 Makefile
-        if (I->isBitcode())
-          outs() << "b";
-        else
-          outs() << " ";
+        outs() << " ";
         unsigned mode = I->getMode();
         printMode((mode >> 6) & 007);
         printMode((mode >> 3) & 007);