Michael Felt added the comment:

On 02-Aug-16 15:34, Martin Panter wrote:
> Martin Panter added the comment:
>
> For 2.7, adding the automatic RTLD_MEMBER mode does not seem like a bug fix 
> to me. Currently, I understand this code could load two separate libraries:
>
> file = CDLL("libcrypto.a(libcrypto.so.1.0.0)")
Noone (in their right mind, imho) would install, or extract the archive 
member libcrypto.so.1.0.0and then rename it 
/usr/lib/libcrypto.a(libcrypto.so.1.0.0)

FYI - I did test this case, and as a file, without 0x000400000 (aka 
RLTD_MEMBER) or'd into the mode.
> member = CDLL("libcrypto.a(libcrypto.so.1.0.0)", DEFAULT_MODE | 0x00040000)
>
> With your proposed change, the first line will do the same as the second 
> line, and Python will no longer provide a way to load a file named like in 
> the first operation. Maybe this is okay for the next version of Python 3 
> (because it is only breaking a rare corner case), but my view is it is not 
> worth changing 2.7.
Right now it is broken in AIX - it is impossible to use the native 
archive(member) support. Direct loading of .so files, if I recall 
correctly, was to provide linux affinity (remember the L in AIX 5L).

I believe python2 has some years to go, and basically, you ask anyone 
using python on AIX to go through all kinds of loops. This hurts python 
acceptance on AIX - too much work to get it working and keep it working.

I have been providing AIX support for over 20 years - NEVER have I seen 
anyone name a shared library libxxx.a(libxxx.so). What I have seen is 
that people extract archive members from a .a archive into the same 
directory - but when the archive gets updated most forget to extract the 
members again.

In yet another case I have seen a case where they copied everything to a 
new directory and do a chroot() to get the .so files they want - because 
it is impossible to load from a .a file.

Yes, when I first started back in February and March: a) knew next to 
nothing about python; b) was trying to solve it in ways I would like it 
be (mainly more flexible aka smarter re: the argument to find_library().

However, I do believe what I have here does what is done for other 
platforms (e.g., darwin needs a different name ending, just not a 
different mode to go with it) - will "fix" all "performance" related 
issues for AIX re: calling ldconfig (which is only available in 
extremely rare situations - again I have never seen it - because, by 
default, even gcc is using AIX ld, not GNU ld)

I hope saying "please" helps. Without it, the AIX implementation is 
non-existant. The linux code is called for AIX because that is the last 
else: block, not because the code is specific to "posix".

so - PLEASE - pretty please!

Michael

p.s. And I shall look at the mercurial pages - and I hope have it working.
>
> ----------
> nosy: +martin.panter
> title: ctypes and AIX - also for 2.7.X (and later) -> ctypes library loading 
> and AIX - also for 2.7.X (and later)
>
> _______________________________________
> Python tracker <rep...@bugs.python.org>
> <http://bugs.python.org/issue27435>
> _______________________________________

----------

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

Reply via email to