Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20211222054646.GB1950@voyager>
Date: Wed, 22 Dec 2021 06:46:46 +0100
From: Markus Wichmann <nullplan@....net>
To: musl@...ts.openwall.com
Subject: Re: Dynamic linking of NEEDED with absolute path differs than
 that of glibc

On Tue, Dec 21, 2021 at 10:56:33AM -0800, Farid Zakaria wrote:
> Hello!
>
> I am working, along with Tom <scogland1@...l.gov> on a contribution to
> patchelf[1] that takes all the NEEDED from downstream shared object
> dependencies and lifts them to the top executable. I then change the
> NEEDED in the top executable to be absolute paths. This seems to work
> as expected in glibc.
>

May I ask why you copy the transitive dependencies? This also used to be
the default behavior of GNU ld, and it didn't make sense to me then,
either. I noticed it when I was using Gentoo. I had some library
providing some cryptographic service, but not actually implementing the
crypto itself; it could use at least two backends for that. Something
happened that broke one backend, so I recompiled the library to use the
other backend, but the executables now would not load, because they
contained a dependency on the library they never actually needed
directly. So I had to recompile the program. And I thought not having to
recompile the programs when you update the libraries was supposed to be
a strength of shared libraries.

>
> Tom helped track this down due to the shortname assignment behavior[2]
>

This has already been the subject of discussion years ago. The stated
reason (Rich gave) back then was that loading a library by explicit file
name is not the same as loading it by short name. Loading the library by
explicit file name can mean that you have a module with a private
version of a library, that is not meant to be globally accessible, and
if then later someone comes along to load a library by the short name,
they do not mean the same version, but rather, the system version of the
library.

Though I don't know if this applies to DT_NEEDED as much as to dlopen().

Ciao,
Markus

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.