> From: "Theo de Raadt" <dera...@openbsd.org>
> Date: Mon, 14 Feb 2022 00:34:53 -0700
> 
> > The solution would be to add symlinks like all the other OSes do.  But
> > Theo doesn't like that.
> 
> No, the problem is you add symbolic links, how long before software
> ecosystems in ports choose the short names in linkage -- "because it
> also works"?  If they do so, all the transition benefits we have gained
> from the #.# names is lost.  Forever.

Nope.  When linking against a shared library, the full #.# name is
taken from the DT_SONAME entry of the shared library and recorded as a
DT_NEEDED entry in the executable.  And those DT_NEEDED entries are
used by the dynamic linker to lookup the shared libraries.

There is a scenario where this goes wrong.  If a shared library lacks
a DT_SONAME entry, the library filename is used to generate the
DT_NEEDED entries.  But I would consider such a shared library broken
and we fixed base a loooong time ago.  Some care has to be taken when
adding the symlinks to shared libraries in ports.  But I'm sure the
package management stuff could check that shared libraries in ports
have a DT_SONAME entry.

> Then, when we do the ABI breaks we are famous for, people will get screwed
> because their existing binaries will load the new libraries because such
> a binary will say "libc.so", and it will not load the actual library version
> it was originally linked against.  And therefore, the binary won't run.
> 
> And the next step will be that internal discouragment against ABI breaks
> will grow....
> 
> So it isn't that I am unhappy about it, I am just thinking ahead that
> moving away from major.minor even in small steps will hurt us very badly.

This will not move us away from major.minor.

Reply via email to