Xavier de Gaye <xdeg...@gmail.com> added the comment:

Thanks for fixing the regression Victor.

Here is another potential problem.

On Android API 24 built with NDK r19, symbol resolution fails in the _socket 
shared library after changeset 8c3ecc6bacc8d0cd534f2b5b53ed962dd1368c7b when 
python is built with '--enable-shared':

  generic_x86_64:/data/local/tmp/python $ python -c "import _socket"
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
  ImportError: dlopen failed: cannot locate symbol "PyByteArray_Type" 
referenced by 
"/data/local/tmp/python/lib/python3.8/lib-dynload/_socket.cpython-38d.so"...

This does not happen when the build is configured without '--enable-shared'.

An NDK issue [1] reports the same problem and dimitry in this issue explains 
that on Android >= 23 the shared library must be linked against the shared 
library where the symbol is defined. Dimitry says that the Android loader was 
fixed in M (i.e. API 23) and it must refer to the changes listed in the 
"RTLD_LOCAL (Available in API level >= 23)" section of "Android changes for NDK 
developers" [2].

[1] https://github.com/android-ndk/ndk/issues/201
[2] 
https://android.googlesource.com/platform/bionic/+/android-n-mr2-preview-1/android-changes-for-ndk-developers.md

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue21536>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to