classification
Title: find_library broken for binutils >= 2.32 / 2.34
Type: behavior Stage:
Components: ctypes Versions: Python 3.10, Python 3.9, Python 3.8, Python 3.7
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: Frederik Rietdijk, amaury.forgeotdarc, belopolsky, meador.inge, vinay.sajip
Priority: normal Keywords:

Created on 2020-05-23 07:41 by Frederik Rietdijk, last changed 2020-05-24 08:50 by SilentGhost.

Messages (2)
msg369699 - (view) Author: Frederik Rietdijk (Frederik Rietdijk) Date: 2020-05-23 07:41
With binutils 2.34 Python 3 (any version) the following returns None

    python3 -c 'import ctypes.util; print((ctypes.util.find_library("c")))'

instead of the requested library which we think may be caused by https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=727a29badd95a68d08b86fec0b98702ce756c660
which is included in binutils 2.32 and up.


With binutils at 2.31 we got

# recent unstable
$ nix-shell --pure -p hello --run 'ld -t -o /dev/null -lc'
/nix/store/a57856fs4m8ir6vlv14h3gq3sv9aq2lb-binutils-2.31.1/bin/ld: mode elf_x86_64
/nix/store/nwsn18fysga1n5s0bj4jp4wfwvlbx8b1-glibc-2.30/lib/libc.so.6
/nix/store/nwsn18fysga1n5s0bj4jp4wfwvlbx8b1-glibc-2.30/lib/ld-linux-x86-64.so.2
/nix/store/nwsn18fysga1n5s0bj4jp4wfwvlbx8b1-glibc-2.30/lib/ld-linux-x86-64.so.2
/nix/store/a57856fs4m8ir6vlv14h3gq3sv9aq2lb-binutils-2.31.1/bin/ld: warning: cannot find entry symbol _start; not setting start address

however with 2.34 we get

# current staging
$ nix-shell --pure -p hello --run 'ld -t -o /dev/null -lc'
/nix/store/j1l6ds4mhm97nqw965w9sg07i9fric4d-glibc-2.30/lib/libc.so
/nix/store/j1l6ds4mhm97nqw965w9sg07i9fric4d-glibc-2.30/lib/libc.so.6
/nix/store/j1l6ds4mhm97nqw965w9sg07i9fric4d-glibc-2.30/lib/libc_nonshared.a
/nix/store/j1l6ds4mhm97nqw965w9sg07i9fric4d-glibc-2.30/lib/ld-linux-x86-64.so.2
/nix/store/j1l6ds4mhm97nqw965w9sg07i9fric4d-glibc-2.30/lib/libc_nonshared.a
/nix/store/j1l6ds4mhm97nqw965w9sg07i9fric4d-glibc-2.30/lib/ld-linux-x86-64.so.2
/nix/store/j284mk8hdv9ccxfdlhcdk1lg2jml4fhk-binutils-2.34/bin/ld: warning: cannot find entry symbol _start; not setting start address

The text-file libc.so is present which find_library cannot handle.

I suppose the regex needs to be fixed to exclude these references or otherwise handle them. It may be a bit late for binutils to revert their change.

Note this issue was discovered with the CFFI test suite https://foss.heptapod.net/pypy/cffi/blob/2aa5775ffdd6a911e9f40e3c2f5ba766155349c5/c/test_c.py#L60

Nixpkgs issue: https://github.com/NixOS/nixpkgs/pull/86954#issuecomment-632985576
msg369701 - (view) Author: Frederik Rietdijk (Frederik Rietdijk) Date: 2020-05-23 07:48
I suppose this issue was not found yet because a) regression testing is done with ubuntu 18.04 LTS which uses binutils 2.30 and b) it, along with most distro's, will use ldconfig, which we in Nixpkgs have patched out.
History
Date User Action Args
2020-05-24 08:50:11SilentGhostsetnosy: + vinay.sajip, amaury.forgeotdarc, belopolsky, meador.inge

versions: - Python 3.5, Python 3.6
2020-05-23 07:48:22Frederik Rietdijksetmessages: + msg369701
2020-05-23 07:41:27Frederik Rietdijkcreate