diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp --- a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp +++ b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp @@ -1486,7 +1486,8 @@ 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 @@ 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 @@ 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 @@ 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 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.