Commit 5422e3cf authored by Victor Stinner's avatar Victor Stinner Committed by GitHub

bpo-36722: Debug build loads libraries built in release mode (GH-12952)

In debug build, import now also looks for C extensions compiled in
release mode and for C extensions compiled in the stable ABI.
parent 62dfd7d6
In debug build, import now also looks for C extensions compiled in release
mode and for C extensions compiled in the stable ABI.
...@@ -38,9 +38,10 @@ const char *_PyImport_DynLoadFiletab[] = { ...@@ -38,9 +38,10 @@ const char *_PyImport_DynLoadFiletab[] = {
".dll", ".dll",
#else /* !__CYGWIN__ */ #else /* !__CYGWIN__ */
"." SOABI ".so", "." SOABI ".so",
#ifndef Py_DEBUG #ifdef ALT_SOABI
"." ALT_SOABI ".so",
#endif
".abi" PYTHON_ABI_STRING ".so", ".abi" PYTHON_ABI_STRING ".so",
#endif /* ! Py_DEBUG */
".so", ".so",
#endif /* __CYGWIN__ */ #endif /* __CYGWIN__ */
NULL, NULL,
......
...@@ -632,6 +632,7 @@ THREADHEADERS ...@@ -632,6 +632,7 @@ THREADHEADERS
LIBPL LIBPL
PY_ENABLE_SHARED PY_ENABLE_SHARED
EXT_SUFFIX EXT_SUFFIX
ALT_SOABI
SOABI SOABI
LIBC LIBC
LIBM LIBM
...@@ -15127,6 +15128,17 @@ SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFO ...@@ -15127,6 +15128,17 @@ SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFO
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SOABI" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SOABI" >&5
$as_echo "$SOABI" >&6; } $as_echo "$SOABI" >&6; }
if test "$Py_DEBUG" = 'true'; then
# Similar to SOABI but remove "d" flag from ABIFLAGS
ALT_SOABI='cpython-'`echo $VERSION | tr -d .``echo $ABIFLAGS | tr -d d`${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET}
cat >>confdefs.h <<_ACEOF
#define ALT_SOABI "${ALT_SOABI}"
_ACEOF
fi
case $ac_sys_system in case $ac_sys_system in
Linux*|GNU*|Darwin|VxWorks) Linux*|GNU*|Darwin|VxWorks)
......
...@@ -4627,6 +4627,14 @@ AC_MSG_CHECKING(SOABI) ...@@ -4627,6 +4627,14 @@ AC_MSG_CHECKING(SOABI)
SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET} SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET}
AC_MSG_RESULT($SOABI) AC_MSG_RESULT($SOABI)
if test "$Py_DEBUG" = 'true'; then
# Similar to SOABI but remove "d" flag from ABIFLAGS
AC_SUBST(ALT_SOABI)
ALT_SOABI='cpython-'`echo $VERSION | tr -d .``echo $ABIFLAGS | tr -d d`${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET}
AC_DEFINE_UNQUOTED(ALT_SOABI, "${ALT_SOABI}",
[Alternative SOABI used in debug build to load C extensions built in release mode])
fi
AC_SUBST(EXT_SUFFIX) AC_SUBST(EXT_SUFFIX)
case $ac_sys_system in case $ac_sys_system in
Linux*|GNU*|Darwin|VxWorks) Linux*|GNU*|Darwin|VxWorks)
......
...@@ -12,6 +12,10 @@ ...@@ -12,6 +12,10 @@
support for AIX C++ shared extension modules. */ support for AIX C++ shared extension modules. */
#undef AIX_GENUINE_CPLUSPLUS #undef AIX_GENUINE_CPLUSPLUS
/* Alternative SOABI used in debug build to load C extensions built in release
mode */
#undef ALT_SOABI
/* The Android API level. */ /* The Android API level. */
#undef ANDROID_API_LEVEL #undef ANDROID_API_LEVEL
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment