From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 6ECF8138247 for ; Wed, 8 Jan 2014 20:14:57 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 6A733E0D31; Wed, 8 Jan 2014 20:14:49 +0000 (UTC) Received: from foo.stuge.se (foo.stuge.se [212.116.89.98]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 27B1EE0D28 for ; Wed, 8 Jan 2014 20:14:46 +0000 (UTC) Received: (qmail 28292 invoked by uid 501); 8 Jan 2014 20:14:43 -0000 Message-ID: <20140108201443.28291.qmail@stuge.se> Date: Wed, 8 Jan 2014 21:14:43 +0100 From: Peter Stuge To: gentoo-dev@lists.gentoo.org Subject: Re: [gentoo-dev] libtool lt_dlopenext vs. gen_ld_script: breakages at runtime Mail-Followup-To: gentoo-dev@lists.gentoo.org References: Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Archives-Salt: f2577afe-5175-4149-a259-ed42732e2f01 X-Archives-Hash: 243b483d55ab0f3b03fb4f6ec55735c9 Robin H. Johnson wrote: > Comments: > --------- > In bug #4411, comment 43, vapier noted: > > any package that does dlopen("libfoo.so") without the version info like ".so.X" is broken. > In this case, the lt_dlopenext consumer is explicitly testing multiple > versions of libusb at runtime, and picking the correct interface: > it doesn't need to depend on a specific version. vapier is still correct and the consumer is indeed broken, it does too need to specify the .so version in the dlopen() call, at least in the case of libusb. It's fine for programs to try to dlopen() API providers for both libusb-0.1 and libusb-1.0 APIs and use whichever they find, but that MUST be done by full filename including ABI version in each call. dev-libs/libusb-0.1 has only ever existed as libusb-0.1.so.4.4.4 so either that or libusb-0.1.so.4 is what must be used with dlopen(). libusb-1.0 API providers are by design API as well as ABI incompatible with libusb-0.1 so there is no way to get libusb-1.0 if you ask for libusb-0.1. I believe that libusb-0.1 being the way it is happened by accident and I know that libusb-1.0 use of libtool is better but can still improve. > This is also because the lt_dlopenext interface does NOT accepted > files versioned after the .so: it needs the filename with no extensions. Hm, that seems limited? //Peter