Originally posted by Weasel
View Post
But those frameworks are sitting in Linux not used anywhere near as much as they should be. Both DT_FILTER and DT_AUXllIARY exist for stubbing over the system differences.
Third party applications makers want distributions to agree. Distributions are not going to agree. So you end up with never ending chicken and egg. At least valve with steam runtime has worked out they need to provide a run-time.
The existence of DT_FILTER and DT_AUXllIARY means third party application developers could all sit around a table agree to create a set of highly compact .so files using DT_FILTER to mask over most of the require distributions differences and end up less than 5 megs to ship covering all the common libraries. Each .so filter for a .so file is under 4kb uncompressed. Please note these shims would still be a runtime. Yes you would need different set of shims for different distributions. Heck distributions in time might start making the shims of applications are always shipping with them.
Yes the shim work is something different application making groups could share between each other its not like this stuff would need to be internal secret stuff.
See the way to break this chicken and egg is to understand what ELF allows and getting the third party application makers to put up a unified front.
DT_FILTER .so files can make a newer version of glibc behave like a older one right down to exported default functions.
Weasel as you said windows shims for compatibility. DT_FILTER and DT_AUXllIARY exist for shimming.
You said distributions should keep old libraries around they are not going to. They will keep at best 1 version of library containing all versions using versioned symbols and from that using DT_FILTER you can then make multi versions that function like all the different versions of that library exactly. Less than 4kb a version by this form of stub emulation. See the compression hidden in the versioned symbol system now. Lets not keep unmaintained libraries when stub/shimming newer version of library to look like older version of library works.
The big reason Linux desktop suxs:
1) Absolute conflicts that you need libcapsule to deal with.
2) Shim system designed into the ELF format is basically totally unused.
3) Attempting to apply other platform build solutions to Linux without understand how SUN in fact designed it to work.
4) No agreement on packaging.
Is there anything wrong the the ELF format absolutely no. Is there need for education on what the ELF format can do and how it should be used hell yes. We have been stuck because people have been saying ELF cannot do a stack of things when it can and not having a clue how it designed to work.
Comment