mailing list of musl libc
 help / color / mirror / code / Atom feed
* handling dlopen("/.../libc.so", ...) etc.
@ 2015-10-16  3:46 Rich Felker
  2015-10-16  4:00 ` Рысь
  0 siblings, 1 reply; 4+ messages in thread
From: Rich Felker @ 2015-10-16  3:46 UTC (permalink / raw)
  To: musl

Presently, attempting to load "libc.so" (without pathname) or a number
of other standard library names via dlopen suppresses the actual
loading and returns a reference to the existing libc dso object.
However, loading it via a pathname or alternate name/symlink will
actually cause another copy to be loaded into memory (since we can't
check the dev/ino against the existing one, because the kernel didn't
give those to us) and bad things will happen. I've been thinking some
about ways to prevent that.

The most obvious way is to link libc.so with -Wl,-z,nodlopen and make
the dynamic linker enforce DF_1_NOOPEN, but this would cause the load
to fail when we probably want it to succeed but return a reference to
the existing libc.

Another option would be to somehow encode musl's identity in libc.so
so that the loader code can check "is the dso we've just loaded
actually musl?" In that case it can abort the load and use the
existing libc instead. Options for how to do this might include a
special reserved-namespace symbol. If an approach like this is taken,
it would be ideal to be able to detect existing/previous versions of
libc.so (to avoid loading them too), and the approach should be
future-proof so that the current libc.so can avoid loading future
versions of itself, and so that future versions can avoid loading the
current version.

I'd like to hear any further ideas on how to achieve this.

Rich


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-10-16  4:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-16  3:46 handling dlopen("/.../libc.so", ...) etc Rich Felker
2015-10-16  4:00 ` Рысь
2015-10-16  4:18   ` Rich Felker
2015-10-16  4:31     ` Рысь

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).