This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: A patch for default version and archive
From: Ulrich Drepper <drepper@redhat.com>
Date: 14 Nov 2000 01:58:18 -0800
When we developed the versioning handling Eric Youngdale, myself, and
to some extend Ian discussed all these things over an extended period
of time. We knew how the result would look like and that we stretched
the original model already to a point where it is not 100% guaranteed
that you catch all errors. You are again far too fast with your
implementation since the consequences are not clear. Poor Nick cannot
do much but seeing that nothing breaks and I had no time to review all
this (leaving alone Eric and Ian as it seems).
I never really understood versioning, actually. I more or less
understand what is supposed to happen in the simple case of a shared
object with versioned symbols, but I never fully grasped the use of @
symbols.
My guess is that the @ symbols serve two purposes. One is to make it
possible to specify the version of a symbol in a .o file rather than
requiring a version script when building a shared object. The other
is to simplify the implementation within the existing GNU linker code,
except that that turned out to be a mistake, since it actually makes
the implementation more complex and harder to understand.
If we eliminated the @ symbols, then the creator of a shared object
would have to specify the versions at creation time, and I believe the
situation would be more comprehensible, albeit much harder on library
maintainers. I'm not advocating this course of action, but we should
think about what it would mean.
What I think we really need to do is to write down the semantics of
versioned symbols. I actually asked Eric to do this long ago so that
I could understand what was going on, but he never found the time to
do it. Without some agreed upon definition of what versioned symbols
actually mean, arguments of the sort occurring now between HJ and
Ulrich are inevitable. It's impossible for third parties to
adjudicate them, because nobody knows what is supposed to happen. So
I think that arguing over the patch is putting the cart before the
horse.
Unfortunately, it seems unlikely that anybody will write down how
versioned symbols should work, so the situation is likely to remain
confusing for some time to come.
Ian