Subject: Re: NetBSD 2.0 release date
To: None <tech-kern@NetBSD.org>
From: John Franklin <franklin@elfie.org>
List: tech-kern
Date: 12/09/2003 00:45:16
On Dec 8, 2003, at 3:39 PM, Jason Thorpe wrote:

>
> On Dec 8, 2003, at 11:08 AM, John Franklin wrote:
>
>> Hmm... wouldn't want to take a minor number without the decision=20
>> coming from the library developer.  Can ELF handle a third version=20
>> number as a build number?  That is, libother.0.1.0 is linked against=20=

>> libc.12, and libother.0.1.1 is linked against libc.13.
>
> ELF doesn't actually *have* shared library version numbers.  Library=20=

> versions are completely a naming scheme in ELF.
>
> Let's take our current scheme as an example.
>
> We generate libraries with names like:
>
> 	lib<name>.so.<major>.<minor>
>
> ld(1) looks for libraries with names like:
>
> 	lib<name>.so
>
> Encoded in the library is something called an "soname".  By=20
> *convention*, this is a name of the form:
>
> 	lib<name>.so.<major>
>
> This "soname" is what is recorded in the dependency information.  So,=20=

> let's consider:
>
> 	* A library named libfoo.so.1.1
> 	* The "soname" of the library is libfoo.so.1
> 	* The link-time name that ld(1) looks for is libfoo.so
>
> In this case, the program gets a dependency recorded for a library=20
> named "libfoo.so.1", and so the run-time dynamic linker will look for=20=

> a file named "libfoo.so.1".  This is why you see symbolic links on=20
> systems that use ELF shared libraries:
>
>   0 lrwxr-xr-x  1 root  wheel      15 Sep 23 08:06 libkrb5.so@ ->=20
> libkrb5.so.18.4
>   0 lrwxr-xr-x  1 root  wheel      15 Sep 23 08:06 libkrb5.so.18@ ->=20=

> libkrb5.so.18.4
> 268 -r--r--r--  1 root  wheel  272935 Sep 23 08:06 libkrb5.so.18.4

A fair point.  But we can update the run-time dynamic linker to=20
intelligently look at <soname>[.x] files until it finds the set of=20
shared libraries that are most current and have sonames all in=20
agreement.

Many questions:
1. Are there new security issues beyond that of shared libraries?
2  Do we want to turn convention into de-facto standard?
3. If there are multiple sets, with no clear-cut winner (e.g. libfoo.1=20=

& libbar.2 vs libfoo.2 & libbar.1), which set gets selected?

jf
--=20
John Franklin
franklin@elfie.org
ICBM: 35=B043'56"N 78=B053'27"W