From owner-freebsd-ports@FreeBSD.ORG Sun May 6 14:21:32 2007 Return-Path: X-Original-To: freebsd-ports@FreeBSD.org Delivered-To: freebsd-ports@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6D4CF16A401; Sun, 6 May 2007 14:21:32 +0000 (UTC) (envelope-from eischen@vigrid.com) Received: from mail.ntplx.net (mail.ntplx.net [204.213.176.10]) by mx1.freebsd.org (Postfix) with ESMTP id 15BBE13C457; Sun, 6 May 2007 14:21:31 +0000 (UTC) (envelope-from eischen@vigrid.com) Received: from sea.ntplx.net (sea.ntplx.net [204.213.176.11]) by mail.ntplx.net (8.14.0/8.14.0/NETPLEX) with ESMTP id l46E7p7c000219; Sun, 6 May 2007 10:07:51 -0400 (EDT) X-Virus-Scanned: by AMaViS and Clam AntiVirus (mail.ntplx.net) X-Greylist: Message whitelisted by DRAC access database, not delayed by milter-greylist-3.0 (mail.ntplx.net [204.213.176.10]); Sun, 06 May 2007 10:07:51 -0400 (EDT) Date: Sun, 6 May 2007 10:07:51 -0400 (EDT) From: Daniel Eischen X-X-Sender: eischen@sea.ntplx.net To: freebsd-current@FreeBSD.org Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Mailman-Approved-At: Sun, 06 May 2007 14:30:26 +0000 Cc: Subject: HEADS UP: shared library bump, symbol versioning, libthr change X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd-current@FreeBSD.org List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 14:21:32 -0000 Sometime this coming weekend (May 11-13), I'll be committing the following patch: http://people.freebsd.org/~deischen/symver/bump_symver.diffs.050207 What does this do? o All library versions that haven't already been bumped and that are not new to 7.0 will be bumped. o Symbol versioning will be enabled by default. This means that for those libraries which are symbol versioned (libc, libelf, libpthread, librt, libthr, libthr_db, and msun) we will have to support all public interfaces as our ABI from this point forward. Compatibility is now maintained in the library itself, not in a separate compat library and by bumping shared library versions. You can disable symbol versioning by setting NO_SYMVER. o The default threading library is changed from libpthread to libthr. libthr remains installed as libthr, libpthread is installed as libkse, and libpthread will link to libthr by default. Compiling with -pthread will continue to work as before. You can override the default library by setting DEFAULT_THREAD_LIBRARY=libpthread or libc_r before a buildworld/installworld. /lib/libthr.so.3 /usr/lib/libpthread.a -> libthr.a /usr/lib/libpthread.so -> libthr.so /usr/lib/libpthread_p.a -> libthr_p.a /usr/lib/libthr.a /usr/lib/libthr.so -> /lib/libthr.so.3 /usr/lib/libthr_p.a /usr/lib/libkse.a /usr/lib/libkse.so -> libkse.so.3 /usr/lib/libkse.so.3 /usr/lib/libkse_p.a How does this affect ports? Kris ran a package build with this patch, and there were a few problems, mostly because x11-toolkits/xview/patch-lib+libxview+textsw+txt_again.c patches xview to use __svfscanf() which is an internal libc function (it should probably use vfscanf). A few ports broke because they required xview. Some ports did not break, but they used some symbols exported from libc that are private and not part of the ABI. These ports are not clean with respect to our ABI and should be changed if possible. Some of my notes on symbol versioning are here: http://people.freebsd.org/~deischen/symver/library_versioning.txt and better technical references are Ulrich Drepper's notes or Sun's document: http://people.redhat.com/~drepper/symbol-versioning http://www.sun.com/software/solaris/programs/abi/documentation/solaris-abi.pdf -- DE