[pypy-commit] cffi default: Add dlopen flags to verify on pypy
rguillebert
noreply at buildbot.pypy.org
Wed Dec 17 18:12:48 CET 2014
Author: Romain Guillebert <romain.py at 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
More information about the pypy-commit
mailing list