diff options
author | Chris Lattner <sabre@nondot.org> | 2005-02-19 18:30:29 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-02-19 18:30:29 +0000 |
commit | 97716a47a1929c57f6ce2c34d76141fd51071ce1 (patch) | |
tree | 0e4b6781c2940072cbbc48f5b0d7c00dddb66adb | |
parent | b9476d9b45025905146f40370056a985f305bc8e (diff) |
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
-rw-r--r-- | lib/Linker/LinkLibraries.cpp | 10 | ||||
-rw-r--r-- | lib/Linker/Linker.cpp | 4 |
2 files changed, 11 insertions, 3 deletions
diff --git a/lib/Linker/LinkLibraries.cpp b/lib/Linker/LinkLibraries.cpp index bfde7906bb..eb31fb96da 100644 --- a/lib/Linker/LinkLibraries.cpp +++ b/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/lib/Linker/Linker.cpp b/lib/Linker/Linker.cpp index ee34cee1d4..19fd861c4d 100644 --- a/lib/Linker/Linker.cpp +++ b/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(); |