diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/test/Object/archive-format.test | 2 | ||||
| -rw-r--r-- | llvm/tools/llvm-ar/llvm-ar.cpp | 12 |
2 files changed, 10 insertions, 4 deletions
diff --git a/llvm/test/Object/archive-format.test b/llvm/test/Object/archive-format.test index 951177256b6..51fa72a1f7b 100644 --- a/llvm/test/Object/archive-format.test +++ b/llvm/test/Object/archive-format.test @@ -8,7 +8,7 @@ RUN: echo -n bar. > 0123456789abcde RUN: echo -n zed. > 0123456789abcdef RUN: rm -f test.a -RUN: llvm-ar rc test.a 0123456789abcde 0123456789abcdef +RUN: llvm-ar --format=gnu rc test.a 0123456789abcde 0123456789abcdef RUN: cat test.a | FileCheck -strict-whitespace %s CHECK: !<arch> diff --git a/llvm/tools/llvm-ar/llvm-ar.cpp b/llvm/tools/llvm-ar/llvm-ar.cpp index 6fbfc153808..66daba30a4a 100644 --- a/llvm/tools/llvm-ar/llvm-ar.cpp +++ b/llvm/tools/llvm-ar/llvm-ar.cpp @@ -13,6 +13,7 @@ //===----------------------------------------------------------------------===// #include "llvm/ADT/StringSwitch.h" +#include "llvm/ADT/Triple.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" #include "llvm/LibDriver/LibDriver.h" @@ -552,9 +553,14 @@ performWriteOperation(ArchiveOperation Operation, object::Archive *OldArchive, std::vector<NewArchiveIterator> *NewMembersP) { object::Archive::Kind Kind; switch (FormatOpt) { - case Default: - // FIXME: change as the support for other formats improve. - Kind = object::Archive::K_GNU; + case Default: { + Triple T(sys::getProcessTriple()); + if (T.isOSDarwin()) + Kind = object::Archive::K_BSD; + else + Kind = object::Archive::K_GNU; + break; + } case GNU: Kind = object::Archive::K_GNU; break; |

