Subject: Re: NetBSD 2.0 release date
To: Jason Thorpe <firstname.lastname@example.org>
From: Eric Haszlakiewicz <email@example.com>
Date: 12/07/2003 17:03:22
On Sun, Dec 07, 2003 at 12:06:42PM -0800, Jason Thorpe wrote:
> Consider this:
> program foo depends on libc.13 and libother.0
> libother.0 depends on libc.12
> *EVEN IF* you have 100% complete inter-library version consistency
> checking, you still lose in this situation. What if foo and libother
> both call function zap(), and zap() is one of the things that had an
> ABI change between the two libc versions?
Well, you'd always lose, but you could lose in a better way.
1) All newly linked libraries get explicit dependency on libc.
2) Hack ld.so to consider no libc dependency to mean libc.12.
Then you'd get an error when running the program, not later. Futhermore
the error would clearly show what the problem was.
Isn't that good enough to allow the major number to be bumped? If not,
I'm not seeing why not.
> The only way you could possibly solve this is to encode an ABI version
> for *every single symbol in the library*. But at that point, how is
> that any different than what we're doing now?
actually, you still lose due to potentially differing data moving
from code that was built with one version of it to code that was built
with a different version.
- program foo calls stat() (using libc.13 version),
- program foo calls libother.0 function do_stuff_with_stat_structure()
(which expects libc.12 stat structure)