From: Rich Felker <dalias@libc.org>
To: musl@lists.openwall.com
Subject: Re: dlsym(handle) may search in unrelated libraries
Date: Fri, 8 Feb 2019 11:09:34 -0500 [thread overview]
Message-ID: <20190208160934.GV23599@brightrain.aerifal.cx> (raw)
In-Reply-To: <20190208120016.GM21289@port70.net>
On Fri, Feb 08, 2019 at 01:00:16PM +0100, Szabolcs Nagy wrote:
> * A. Wilcox <awilfox@adelielinux.org> [2019-02-08 04:19:32 -0600]:
> > On Feb 7, 2019, at 10:54 AM, Rich Felker <dalias@libc.org> wrote:
> > >
> > > However, a depth-first list of dependencies is also needed to solve the longstanding ctor-order issue discussed in several past threads (which I can look up if search doesn't turn them up for you). This is not a requirement of POSIX (which doesn't even have ctors), but it's a reasonable expectation we currently get wrong and I think it might be specified in ELF or some related sysv "standards".
> >
> >
> > It is part of the ELF 1.2 standard and is not only required by GLib, but also Nouveau, gtk-doc, some Qt apps, and others.
>
> note, that the ctor order in c++ is undefined across translation
> units so if a c++ application relies on it that's a bug: the c++
> ctor concept does not necessarily map directly to the elf
> initialization function concept on an elf platform so the elf
> spec does not save them.
In this case they're not using C++ but the GNU C extension.
> in the elf context, relying on DT_NEEDED for ctor ordering
> across libraries means that static linking is broken since
> then there is no DT_NEEDED.
This is true, but they can make static linking also work (within
libraries that share a convention on the priority values to use) by
using the GNU C ctor priority attributes. This could fix the glib bug.
I forget if any distros are doing it out-of-tree or if they just
patched the one ctor to call the other init function explicitly.
> so these packages should be fixed independently of musl
> (assuming they want to be portable or at least static linkable).
This is probably mostly correct.
> that said, lot of libraries do rely on dependency based ctor
> ordering even beyond the elf guarantees (glibc and solaris
> dynamic linkers considers relocations on top of DT_NEEDED to
> establish dependencies between dsos) and some applications
> have dependency cycles which of course is impossible to get
> right but glibc tries to keep the ctor order deterministic
> in some way even in the presence of dlopen during init.
>
> originally dynamic linkers did exactly what musl did, there
> is a nice overview how the complexity evolved:
> https://blogs.oracle.com/solaris/init-and-fini-processing-who-designed-this-v2
Good to know there's precedent.
Rich
next prev parent reply other threads:[~2019-02-08 16:09 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-05 21:02 Alexey Izbyshev
2019-02-06 13:40 ` Alexey Izbyshev
2019-02-06 16:02 ` Markus Wichmann
2019-02-06 17:02 ` Alexey Izbyshev
2019-02-06 20:25 ` Markus Wichmann
2019-02-06 21:23 ` Alexey Izbyshev
2019-02-07 5:33 ` Markus Wichmann
2019-02-07 13:42 ` Alexey Izbyshev
2019-02-07 17:43 ` Markus Wichmann
2019-02-07 20:37 ` Markus Wichmann
2019-02-07 21:29 ` Rich Felker
2019-02-07 16:54 ` Rich Felker
2019-02-07 18:36 ` Markus Wichmann
2019-02-07 18:57 ` Rich Felker
2019-02-07 20:31 ` Markus Wichmann
2019-02-07 21:33 ` Rich Felker
2019-02-07 21:37 ` Rich Felker
2019-02-08 10:19 ` A. Wilcox
2019-02-08 12:00 ` Szabolcs Nagy
2019-02-08 16:09 ` Rich Felker [this message]
2019-02-09 22:53 Alexey Izbyshev
2019-02-10 1:03 ` Rich Felker
2019-02-26 15:07 ` Rich Felker
2019-03-04 2:11 ` Rich Felker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190208160934.GV23599@brightrain.aerifal.cx \
--to=dalias@libc.org \
--cc=musl@lists.openwall.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).