Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 9 Jul 2011 15:33:19 +0200
From:      Jilles Tjoelker <jilles@stack.nl>
To:        Kostik Belousov <kostikbel@gmail.com>
Cc:        Daniel Eischen <deischen@freebsd.org>, "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net>, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: cvs commit: src Makefile.inc1 src/lib/libc Makefile src/lib/libc_r Makefile src/lib/libpthread Makefile pthread.map src/lib/libpthread/thread thr_private.h src/lib/librt Makefile src/lib/libthr Makefile pthread.map src/lib/libthread_db Makefile ...
Message-ID:  <20110709133319.GD14262@stack.nl>
In-Reply-To: <20110616220313.GT48734@deviant.kiev.zoral.com.ua>
References:  <200705131412.l4DECf2N068712@repoman.freebsd.org> <20110612213330.D10590@maildrop.int.zabbadoz.net> <20110616212738.GA73657@stack.nl> <20110616220313.GT48734@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Jun 17, 2011 at 01:03:13AM +0300, Kostik Belousov wrote:
> On Thu, Jun 16, 2011 at 11:27:38PM +0200, Jilles Tjoelker wrote:
> > I think disabling symver completely is too much: it implies a new
> > mutually incompatible set of binaries. What should be done instead is
> > allowing to compile out the compatibility functions. This means all
> > __sym_compat() directives and all functions referred to by them. A
> > simple approach would use a yes/no #ifdef, while a more sophisticated
> > approach would allow choosing the oldest version to retain compatibility
> > with, for example freebsd7_semctl() in lib/libc/gen/semctl.c would be
> > compiled in iff compatibility with FreeBSD 7.x was requested.

> > With just symver, a binary for FreeBSD version for which compatibility
> > was not compiled in will abort if and when it attempts to use a function
> > that was changed in a later version.

> Preventing which behaviour was explicitely the goal of designing the
> symver mechanism at the first place.

That was certainly Sun's intention in designing symver, but it does not
work for us. For the case of trying to run a 9-current binary on
8-stable, as soon as a new function is MFCed from 9-current to 8-stable
and/or 7-stable, the libc in the stable branch will gain the FBSD_1.2
version definition, and therefore as far as symver is concerned running
a 9-current binary is OK.

For the case of running a binary for which compatibility was not
compiled in, it is very likely that other symbols with that version
(e.g. FBSD_1.0) remain and symver's initial check will pass.

The only thing which symver does for us (but it is very useful) is
ensuring that old binaries get the correct versions of functions which
changed their ABI, allowing them to run with the current libraries.

-- 
Jilles Tjoelker



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110709133319.GD14262>