|
Message-ID: <20190724151735.GS21055@port70.net> Date: Wed, 24 Jul 2019 17:17:35 +0200 From: Szabolcs Nagy <nsz@...t70.net> To: musl@...ts.openwall.com Subject: Re: Removing glibc from the musl .2 ABI * Rich Felker <dalias@...c.org> [2019-07-22 11:52:59 -0400]: > So, what I'd (tentatively; for discussion) like to do: > > When ldso loads an application or shared library and detects that it's > glibc-linked (DT_NEEDED for libc.so.6), it both loads a gcompat > library instead *and* flags the dso as needing ABI-compat. The gcompat > library would be permanently RTLD_LOCAL, unable to be used for > resolving global symbols, since it would have to define symbols > conflicting with libc symbols names and with future directions of the > musl ABI. > > Symbol lookups when relocating such a flagged dso would take place by > first processing gcompat (logically, adding it to the head of the dso > search list), then the normal symbol search order. The gcompat library > could also provide a replacement dlsym function, so that dlsym calls > from the glibc-linked DSO also follow this order, and a replacement > dlopen, so that dlopen of libc from the glibc-linked DSO would get the > gcompat module. > > I'm not sure what mechanism gcompat would then use to make its own > references to the underlying real libc functions. This is something > we'd need to think about. i'm not sure how gcompat would implement dlsym, if it's on top of the musl dlsym, then that needs to be accessible already (e.g. by exposing a __musl_dlsym alias) and can be used to do lookups in libc.so. > > Before we decide to do it, please be aware that this would be a bit of > a burden on gcompat to do more than it's doing now. But it would also > make lots of cases work that fundamentally *can't* work now -- compat > with 32-bit code using the legacy 32-bit off_t functions, compat with > 64-bit code using regexec, etc. -- anywhere the musl ABI currently > conflicts with the glibc ABI. Of course much of this is optional. The > new things that would be mandatory would mainly be moving over > existing glibc compat shims (like the __ctype and __xstat stuff) and > implementing converting wrappers where musl's use of reserved space > creates unsafety/incompatibility with the existing glibc code. > > Rich
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.