Gentoo Archives: gentoo-dev

From: Peter Stuge <peter@×××××.se>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] libtool lt_dlopenext vs. gen_ld_script: breakages at runtime
Date: Wed, 08 Jan 2014 20:14:57
Message-Id: 20140108201443.28291.qmail@stuge.se
In Reply to: [gentoo-dev] libtool lt_dlopenext vs. gen_ld_script: breakages at runtime by "Robin H. Johnson"
1 Robin H. Johnson wrote:
2 > Comments:
3 > ---------
4 > In bug #4411, comment 43, vapier noted:
5 > > any package that does dlopen("libfoo.so") without the version info like ".so.X" is broken.
6 > In this case, the lt_dlopenext consumer is explicitly testing multiple
7 > versions of libusb at runtime, and picking the correct interface:
8 > it doesn't need to depend on a specific version.
9
10 vapier is still correct and the consumer is indeed broken, it does
11 too need to specify the .so version in the dlopen() call, at least
12 in the case of libusb.
13
14 It's fine for programs to try to dlopen() API providers for both
15 libusb-0.1 and libusb-1.0 APIs and use whichever they find, but that
16 MUST be done by full filename including ABI version in each call.
17
18 dev-libs/libusb-0.1 has only ever existed as libusb-0.1.so.4.4.4 so
19 either that or libusb-0.1.so.4 is what must be used with dlopen().
20
21 libusb-1.0 API providers are by design API as well as ABI incompatible
22 with libusb-0.1 so there is no way to get libusb-1.0 if you ask for
23 libusb-0.1.
24
25 I believe that libusb-0.1 being the way it is happened by accident
26 and I know that libusb-1.0 use of libtool is better but can still
27 improve.
28
29
30 > This is also because the lt_dlopenext interface does NOT accepted
31 > files versioned after the .so: it needs the filename with no extensions.
32
33 Hm, that seems limited?
34
35
36 //Peter

Replies