Author: Romain Guillebert <romain...@gmail.com> Branch: Changeset: r1587:0853a872dedf Date: 2014-10-21 12:55 +0200 http://bitbucket.org/cffi/cffi/changeset/0853a872dedf/
Log: Add dlopen flags to verify on pypy diff --git a/cffi/vengine_gen.py b/cffi/vengine_gen.py --- a/cffi/vengine_gen.py +++ b/cffi/vengine_gen.py @@ -58,12 +58,12 @@ modname = self.verifier.get_module_name() prnt("void %s%s(void) { }\n" % (prefix, modname)) - def load_library(self): + def load_library(self, flags=0): # import it with the CFFI backend backend = self.ffi._backend # needs to make a path that contains '/', on Posix filename = os.path.join(os.curdir, self.verifier.modulefilename) - module = backend.load_library(filename) + module = backend.load_library(filename, flags) # # call loading_gen_struct() to get the struct layout inferred by # the C compiler diff --git a/cffi/verifier.py b/cffi/verifier.py --- a/cffi/verifier.py +++ b/cffi/verifier.py @@ -16,7 +16,7 @@ class Verifier(object): def __init__(self, ffi, preamble, tmpdir=None, modulename=None, - ext_package=None, tag='', force_generic_engine=False, **kwds): + ext_package=None, tag='', force_generic_engine=False, flags=0, **kwds): self.ffi = ffi self.preamble = preamble if not modulename: @@ -24,6 +24,7 @@ vengine_class = _locate_engine_class(ffi, force_generic_engine) self._vengine = vengine_class(self) self._vengine.patch_extension_kwds(kwds) + self.flags = flags self.kwds = kwds # if modulename: @@ -158,7 +159,7 @@ def _load_library(self): assert self._has_module - return self._vengine.load_library() + return self._vengine.load_library(self.flags) # ____________________________________________________________ diff --git a/testing/test_verify.py b/testing/test_verify.py --- a/testing/test_verify.py +++ b/testing/test_verify.py @@ -1962,3 +1962,17 @@ n = (1 << 29) + i lib.SetLastError(n) assert ffi.getwinerror()[0] == n + +def test_verify_dlopen_flags(): + ffi1 = FFI() + ffi2 = FFI() + + ffi1.cdef("int foo;") + ffi2.cdef("int foo;") + + lib1 = ffi1.verify("int foo;", modulename="foo1", flags=ffi1.RTLD_GLOBAL) + lib2 = ffi2.verify("int foo;", modulename="foo2", flags=ffi2.RTLD_GLOBAL) + + lib1.foo = 42 + + assert lib2.foo == 42 _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit