mirror of
https://github.com/python/cpython.git
synced 2026-06-28 03:41:13 +00:00
[3.15] gh-151422: Don't link libffi into _ctypes_test.so (GH-151423) (#151516)
_ctypes_test doesn't use libffi directly, and linking it into the module
causes emscripten tests to fail.
(cherry picked from commit 8646385076)
Co-authored-by: Hood Chatham <roberthoodchatham@gmail.com>
This commit is contained in:
parent
255b3fff97
commit
e2c7fa7ff6
4 changed files with 14 additions and 4 deletions
|
|
@ -5,7 +5,7 @@
|
|||
c_short, c_int, c_long, c_longlong,
|
||||
c_byte, c_wchar, c_float, c_double,
|
||||
ArgumentError)
|
||||
from test.support import import_helper, skip_if_sanitizer
|
||||
from test.support import import_helper, skip_if_sanitizer, skip_emscripten_stack_overflow
|
||||
_ctypes_test = import_helper.import_module("_ctypes_test")
|
||||
|
||||
|
||||
|
|
@ -193,6 +193,7 @@ class S8I(Structure):
|
|||
(9*2, 8*3, 7*4, 6*5, 5*6, 4*7, 3*8, 2*9))
|
||||
|
||||
@skip_if_sanitizer('requires deep stack', thread=True)
|
||||
@skip_emscripten_stack_overflow()
|
||||
def test_recursive_as_param(self):
|
||||
class A:
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -299,9 +299,16 @@ class X(Structure):
|
|||
self.assertEqual(s.first, got.first)
|
||||
self.assertEqual(s.second, got.second)
|
||||
|
||||
@unittest.skipIf(support.is_wasm32, "wasm ABI is incompatible with test expectations")
|
||||
def _test_issue18060(self, Vector):
|
||||
# Regression tests for gh-62260
|
||||
|
||||
# This test passes a struct of two doubles by value to atan2(), whose C
|
||||
# signature is atan2(double, double), so it only works on platforms
|
||||
# where the abi of a function that takes a struct with two doubles
|
||||
# matches the abi of a function that takes two doubles. The wasm32 ABI
|
||||
# does not satisfy this condition and the test breaks.
|
||||
|
||||
# The call to atan2() should succeed if the
|
||||
# class fields were correctly cloned in the
|
||||
# subclasses. Otherwise, it will segfault.
|
||||
|
|
|
|||
4
configure
generated
vendored
4
configure
generated
vendored
|
|
@ -34966,8 +34966,8 @@ fi
|
|||
if test "x$py_cv_module__ctypes_test" = xyes
|
||||
then :
|
||||
|
||||
as_fn_append MODULE_BLOCK "MODULE__CTYPES_TEST_CFLAGS=$LIBFFI_CFLAGS$as_nl"
|
||||
as_fn_append MODULE_BLOCK "MODULE__CTYPES_TEST_LDFLAGS=$LIBFFI_LIBS $LIBM$as_nl"
|
||||
|
||||
as_fn_append MODULE_BLOCK "MODULE__CTYPES_TEST_LDFLAGS=$LIBM$as_nl"
|
||||
|
||||
fi
|
||||
if test "$py_cv_module__ctypes_test" = yes; then
|
||||
|
|
|
|||
|
|
@ -8479,9 +8479,11 @@ PY_STDLIB_MOD([_testmultiphase], [test "$TEST_MODULES" = yes], [test "$ac_cv_fun
|
|||
PY_STDLIB_MOD([_testsinglephase], [test "$TEST_MODULES" = yes], [test "$ac_cv_func_dlopen" = yes])
|
||||
PY_STDLIB_MOD([xxsubtype], [test "$TEST_MODULES" = yes])
|
||||
PY_STDLIB_MOD([_xxtestfuzz], [test "$TEST_MODULES" = yes])
|
||||
dnl Check have_libffi so _ctypes_test is only built if _ctypes is built.
|
||||
dnl _ctypes_test doesn't use libffi directly.
|
||||
PY_STDLIB_MOD([_ctypes_test],
|
||||
[test "$TEST_MODULES" = yes], [test "$have_libffi" = yes -a "$ac_cv_func_dlopen" = yes],
|
||||
[$LIBFFI_CFLAGS], [$LIBFFI_LIBS $LIBM])
|
||||
[], [$LIBM])
|
||||
|
||||
dnl Limited API template modules.
|
||||
dnl Emscripten does not support shared libraries yet.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue