[llvm] 85c6629 - [JITLink][COFF] Consider lib/dll files in llvm-jitlink.

Sunho Kim via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 25 21:00:43 PDT 2022


Author: Sunho Kim
Date: 2022-07-26T13:00:33+09:00
New Revision: 85c6629d85553a565fe38327d29d5952f7598f01

URL: https://github.com/llvm/llvm-project/commit/85c6629d85553a565fe38327d29d5952f7598f01
DIFF: https://github.com/llvm/llvm-project/commit/85c6629d85553a565fe38327d29d5952f7598f01.diff

LOG: [JITLink][COFF] Consider lib/dll files in llvm-jitlink.

Consider lib/dll files in llvm-jitlink.

Reviewed By: lhames

Differential Revision: https://reviews.llvm.org/D129944

Added: 
    

Modified: 
    llvm/tools/llvm-jitlink/llvm-jitlink.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
index a9187073beee3..77a871b406b39 100644
--- a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
+++ b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
@@ -1486,7 +1486,8 @@ static Error addObjects(Session &S,
     unsigned InputFileArgIdx =
         InputFiles.getPosition(InputFileItr - InputFiles.begin());
     const std::string &InputFile = *InputFileItr;
-    if (StringRef(InputFile).endswith(".a"))
+    if (StringRef(InputFile).endswith(".a") ||
+        StringRef(InputFile).endswith(".lib"))
       continue;
     auto &JD = *std::prev(IdxToJD.lower_bound(InputFileArgIdx))->second;
     LLVM_DEBUG(dbgs() << "  " << InputFileArgIdx << ": \"" << InputFile
@@ -1572,7 +1573,7 @@ static Error addLibraries(Session &S,
   for (auto InputFileItr = InputFiles.begin(), InputFileEnd = InputFiles.end();
        InputFileItr != InputFileEnd; ++InputFileItr) {
     StringRef InputFile = *InputFileItr;
-    if (!InputFile.endswith(".a"))
+    if (!InputFile.endswith(".a") && !InputFile.endswith(".lib"))
       continue;
     LibraryLoad LL;
     LL.LibName = InputFile;
@@ -1594,8 +1595,8 @@ static Error addLibraries(Session &S,
     LL.Modifier = LibraryLoad::Hidden;
     LibraryLoads.push_back(std::move(LL));
   }
-  StringRef StandardExtensions[] = {".so", ".dylib", ".a"};
-  StringRef ArchiveExtensionsOnly[] = {".a"};
+  StringRef StandardExtensions[] = {".so", ".dylib", ".dll", ".a", ".lib"};
+  StringRef ArchiveExtensionsOnly[] = {".a", ".lib"};
 
   // Add -lx arguments to LibraryLoads.
   for (auto LibItr = Libraries.begin(), LibEnd = Libraries.end();
@@ -1676,13 +1677,16 @@ static Error addLibraries(Session &S,
     auto JDSearchPathsItr = JDSearchPaths.find(&JD);
     if (JDSearchPathsItr != JDSearchPaths.end()) {
       for (StringRef SearchPath : JDSearchPathsItr->second) {
-        for (const char *LibExt : {".dylib", ".so", ".a"}) {
+        for (const char *LibExt : {".dylib", ".so", ".dll", ".a", ".lib"}) {
           SmallVector<char, 256> LibPath;
           LibPath.reserve(SearchPath.size() + strlen("lib") +
                           LL.LibName.size() + strlen(LibExt) +
                           2); // +2 for pathsep, null term.
           llvm::copy(SearchPath, std::back_inserter(LibPath));
-          sys::path::append(LibPath, "lib" + LL.LibName + LibExt);
+          if (StringRef(LibExt) != ".lib" && StringRef(LibExt) != ".dll")
+            sys::path::append(LibPath, "lib" + LL.LibName + LibExt);
+          else
+            sys::path::append(LibPath, LL.LibName + LibExt);
           LibPath.push_back('\0');
 
           // Skip missing or non-regular paths.


        


More information about the llvm-commits mailing list