Author: Armin Rigo <ar...@tunes.org>
Branch: release-5.x
Changeset: r86827:12bd393e0411
Date: 2016-09-01 20:35 -0700
http://bitbucket.org/pypy/pypy/changeset/12bd393e0411/

Log:    haaaack on top of previous hacks

diff --git a/rpython/rlib/rdynload.py b/rpython/rlib/rdynload.py
--- a/rpython/rlib/rdynload.py
+++ b/rpython/rlib/rdynload.py
@@ -98,8 +98,15 @@
         try:
             ctypes.CDLL(name)
         except OSError as e:
+            # common case: ctypes fails too, with the real dlerror()
+            # message in str(e).  Return that error message.
             return str(e)
         else:
+            # uncommon case: may happen if 'name' is a linker script
+            # (which the C-level dlopen() can't handle) and we are
+            # directly running on pypy (whose implementation of ctypes
+            # or cffi will resolve linker scripts).  In that case, 
+            # unsure what we can do.
             return ("opening %r with ctypes.CDLL() works, "
                     "but not with c_dlopen()??" % (name,))
 
@@ -160,6 +167,13 @@
             mode = _dlopen_default_mode()
         elif (mode & (RTLD_LAZY | RTLD_NOW)) == 0:
             mode |= RTLD_NOW
+        #
+        # haaaack for 'pypy py.test -A' if libm.so is a linker script
+        # (see reason in _dlerror_on_dlopen_untranslated())
+        if not we_are_translated() and platform.name == "linux":
+            if rffi.charp2str(name) == 'libm.so':
+                name = rffi.str2charp('libm.so.6', track_allocation=False)
+        #
         res = c_dlopen(name, rffi.cast(rffi.INT, mode))
         if not res:
             if not we_are_translated():
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to