Add support for ".so" files compiled with LLVM which contain LLVM bytecode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20253 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Linker/LinkLibraries.cpp b/lib/Linker/LinkLibraries.cpp
index bfde790..eb31fb9 100644
--- a/lib/Linker/LinkLibraries.cpp
+++ b/lib/Linker/LinkLibraries.cpp
@@ -27,9 +27,15 @@
 
   // If its an archive, try to link it in
   if (Pathname.isArchive()) {
-    if (LinkInArchive(Pathname)) {
+    if (LinkInArchive(Pathname))
       return error("Cannot link archive '" + Pathname.toString() + "'");
-    }
+  } else if (Pathname.isBytecodeFile()) {
+    // LLVM ".so" file.
+    if (LinkInFile(Pathname))
+      return error("Cannot link file '" + Pathname.toString() + "'");
+
+  } else if (Pathname.isDynamicLibrary()) {
+    return warning("Library '" + Lib + "' is a native dynamic library.");
   } else {
     return warning("Supposed library '" + Lib + "' isn't a library.");
   }
diff --git a/lib/Linker/Linker.cpp b/lib/Linker/Linker.cpp
index ee34cee..19fd861 100644
--- a/lib/Linker/Linker.cpp
+++ b/lib/Linker/Linker.cpp
@@ -133,7 +133,9 @@
 
   FullPath.elideSuffix();
   FullPath.appendSuffix(&(LTDL_SHLIB_EXT[1]));
-  if (FullPath.isDynamicLibrary())
+  if (FullPath.isDynamicLibrary())  // Native shared library?
+    return FullPath;
+  if (FullPath.isBytecodeFile())    // .so file containing bytecode?
     return FullPath;
 
   FullPath.clear();