Author: Nerixyz
Date: 2026-06-30T10:32:31+02:00
New Revision: 024f7891a43c092b5a1e71411b6552186cb25cf1

URL: 
https://github.com/llvm/llvm-project/commit/024f7891a43c092b5a1e71411b6552186cb25cf1
DIFF: 
https://github.com/llvm/llvm-project/commit/024f7891a43c092b5a1e71411b6552186cb25cf1.diff

LOG: [lldb][Windows] Use (lib)python3.dll when linking with limited API 
(#206585)

In release builds, we already link liblldb against `(lib)python3.dll`
(#201407). However, we still defined
`LLDB_PYTHON_RUNTIME_LIBRARY_FILENAME` to `(lib)python3(.)xx.dll`. So
`LoadPythonRuntime` will try to load the version specific library. You
can reproduce this when trying to run a release build with a different
Python version in PATH.

With this PR, `LLDB_PYTHON_RUNTIME_LIBRARY_FILENAME` will use the stable
ABI library name if we use the limited Python API.

Added: 
    

Modified: 
    lldb/CMakeLists.txt

Removed: 
    


################################################################################
diff  --git a/lldb/CMakeLists.txt b/lldb/CMakeLists.txt
index 20efb6fb1eb1f..7f45487c1d2d7 100644
--- a/lldb/CMakeLists.txt
+++ b/lldb/CMakeLists.txt
@@ -109,12 +109,22 @@ if (LLDB_ENABLE_PYTHON)
   if(WIN32)
     # On Windows, FindPython3 doesn't reliably expose the runtime DLL path,
     # only the import library. CPython's DLL naming is standard.
-    if(MINGW)
-      set(LLDB_PYTHON_RUNTIME_LIBRARY_FILENAME
-          "libpython${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}.dll")
+    if(LLDB_ENABLE_PYTHON_LIMITED_API)
+      if(MINGW)
+        set(LLDB_PYTHON_RUNTIME_LIBRARY_FILENAME
+            "libpython${Python3_VERSION_MAJOR}.dll")
+      else()
+        set(LLDB_PYTHON_RUNTIME_LIBRARY_FILENAME
+            "python${Python3_VERSION_MAJOR}.dll")
+      endif()
     else()
-      set(LLDB_PYTHON_RUNTIME_LIBRARY_FILENAME
-          "python${Python3_VERSION_MAJOR}${Python3_VERSION_MINOR}.dll")
+      if(MINGW)
+        set(LLDB_PYTHON_RUNTIME_LIBRARY_FILENAME
+            "libpython${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}.dll")
+      else()
+        set(LLDB_PYTHON_RUNTIME_LIBRARY_FILENAME
+            "python${Python3_VERSION_MAJOR}${Python3_VERSION_MINOR}.dll")
+      endif()
     endif()
     message(STATUS "LLDB Python runtime DLL: 
${LLDB_PYTHON_RUNTIME_LIBRARY_FILENAME} "
                    "(Python3_VERSION=${Python3_VERSION}, "


        
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to