diff options
| -rw-r--r-- | llvm/lib/Linker/LinkLibraries.cpp | 10 | ||||
| -rw-r--r-- | llvm/lib/Linker/Linker.cpp | 4 | 
2 files changed, 11 insertions, 3 deletions
diff --git a/llvm/lib/Linker/LinkLibraries.cpp b/llvm/lib/Linker/LinkLibraries.cpp index bfde7906bb1..eb31fb96da0 100644 --- a/llvm/lib/Linker/LinkLibraries.cpp +++ b/llvm/lib/Linker/LinkLibraries.cpp @@ -27,9 +27,15 @@ Linker::LinkInLibrary(const std::string& Lib)    // 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/llvm/lib/Linker/Linker.cpp b/llvm/lib/Linker/Linker.cpp index ee34cee1d41..19fd861c4dd 100644 --- a/llvm/lib/Linker/Linker.cpp +++ b/llvm/lib/Linker/Linker.cpp @@ -133,7 +133,9 @@ static inline sys::Path IsLibrary(const std::string& Name,    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();  | 

