If an archive is not recognized as an LLVM bytecode archive then declare
that it is native so that the linker will pass it on downstream. This avoids
a problem where the native link line fails because there is both a .so and
a .a file. The .a file gets processed as bytecode and then dropped from the
command line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36584 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Linker/LinkArchives.cpp b/lib/Linker/LinkArchives.cpp
index 8186e7b..95ac1ab 100644
--- a/lib/Linker/LinkArchives.cpp
+++ b/lib/Linker/LinkArchives.cpp
@@ -88,7 +88,7 @@
 ///  TRUE  - An error occurred.
 ///  FALSE - No errors.
 bool
-Linker::LinkInArchive(const sys::Path &Filename) {
+Linker::LinkInArchive(const sys::Path &Filename, bool &is_native) {
 
   // Make sure this is an archive file we're dealing with
   if (!Filename.isArchive())
@@ -118,6 +118,11 @@
   if (!arch)
     return error("Cannot read archive '" + Filename.toString() +
                  "': " + ErrMsg);
+  if (!arch->isBytecodeArchive()) {
+    is_native = true;
+    return false;
+  }
+  is_native = false;
 
   // Save a set of symbols that are not defined by the archive. Since we're
   // entering a loop, there's no point searching for these multiple times. This