[AIX] identify big archive magic as archive.
authorzhijian <zhijian@ca.ibm.com>
Wed, 19 Jan 2022 17:18:45 +0000 (12:18 -0500)
committerzhijian <zhijian@ca.ibm.com>
Wed, 19 Jan 2022 17:18:45 +0000 (12:18 -0500)
Summary:

  identify big archive magic as archive.

Reviewers: Hubert Tong
Differential Revision: https://reviews.llvm.org/D117511

llvm/lib/BinaryFormat/Magic.cpp
llvm/unittests/BinaryFormat/TestFileMagic.cpp

index 8c7f7b7..0c40bce 100644 (file)
@@ -88,7 +88,10 @@ file_magic llvm::identify_magic(StringRef Magic) {
     if (startswith(Magic, "!<arch>\n") || startswith(Magic, "!<thin>\n"))
       return file_magic::archive;
     break;
-
+  case '<':
+    if (startswith(Magic, "<bigaf>\n"))
+      return file_magic::archive;
+    break;
   case '\177':
     if (startswith(Magic, "\177ELF") && Magic.size() >= 18) {
       bool Data2MSB = Magic[5] == 2;
index 81c5f08..235e4bb 100644 (file)
@@ -46,6 +46,7 @@ protected:
 };
 
 const char archive[] = "!<arch>\x0A";
+const char big_archive[] = "<bigaf>\x0A";
 const char bitcode[] = "\xde\xc0\x17\x0b";
 const char coff_object[] = "\x00\x00......";
 const char coff_bigobj[] =
@@ -96,6 +97,7 @@ TEST_F(MagicTest, Magic) {
   } types[] = {
 #define DEFINE(magic) {#magic, magic, sizeof(magic), file_magic::magic}
       DEFINE(archive),
+      {"big_archive", big_archive, sizeof(big_archive), file_magic::archive},
       DEFINE(bitcode),
       DEFINE(coff_object),
       {"coff_bigobj", coff_bigobj, sizeof(coff_bigobj),