Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Nov 2007 21:42:10 +0000 (GMT)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Brooks Davis <brooks@freebsd.org>
Cc:        freebsd-arch@freebsd.org
Subject:   Re: RFC: libkse*.a in 7.0
Message-ID:  <20071128213947.Q7555@fledge.watson.org>
In-Reply-To: <20071128211022.GA74762@lor.one-eyed-alien.net>
References:  <20071128211022.GA74762@lor.one-eyed-alien.net>

next in thread | previous in thread | raw e-mail | index | archive | help

On Wed, 28 Nov 2007, Brooks Davis wrote:

> A number of people have proposed a direction in 8.0 that would remove 
> support for the syscalls and kernel data structures required by libkse. 
> Apparently this would enable significant simplification of portions of the 
> kernel, but I have no deeply held personal opinion.  The intent is that if 
> that happens, alternate versions of the necessicary dynamic libraries will 
> be supplied in updated compat#x packages.  This will address most consumers. 
> The one set of consumers that would not be addressed is those who have 
> statically linked, threaded binaries using libkse.

It's worth noting that some other mainstream operating systems work hard to 
disallow static linking for precisely this sort of reason -- when I last 
checked, Mac OS X had only one statically linked binary, init, and it may well 
be that launchd is dynamically linked.  This is part of a very explicit policy 
that the defined ABI for applications is *not* the system call layer, but 
rather, the library interfaces, which gives greater flexibility to modify the 
system call interface as needed.

Robert N M Watson
Computer Laboratory
University of Cambridge

>
> Kris and I realized that if we went that route, life would be
> significantly easier if it was difficult to create statically linked,
> binaries using libkse under FreeBSD 7.x.  As a result I would like
> to commit and MFC the following patch which disables building and
> installing libkse*.a in the default case.  This would mean that
> significant effort would be required to create a statically linked
> application that uses the KSE syscalls.
>
> I believe that removing libkse*.a has little downside and leaves the way
> open for either removing or enhancing the KSE system and is the right
> thing to do.
>
> -- Brooks
>
> --- /home/brooks/working/freebsd/p4/freebsd/lib/libkse/Makefile	2007-10-29 10:43:55.000000000 -0500
> +++ lib/libkse/Makefile	2007-11-20 20:39:22.000000000 -0600
> @@ -10,12 +10,15 @@
>
> .include <bsd.own.mk>
>
> -.if (${DEFAULT_THREAD_LIB} == "libkse" || ${MK_LIBTHR} == "no") && \
> -    ${SHLIBDIR} == "/usr/lib"
> +.if (${DEFAULT_THREAD_LIB} == "libkse" || ${MK_LIBTHR} == "no")
> +LIB=kse
> +.if ${SHLIBDIR} == "/usr/lib"
> SHLIBDIR= /lib
> .endif
> +.else
> +SHLIB=kse
> +.endif
>
> -LIB=kse
> SHLIB_MAJOR= 3
> CFLAGS+=-DPTHREAD_KERNEL
> CFLAGS+=-I${.CURDIR}/../libc/include -I${.CURDIR}/thread \
> --- /home/brooks/working/freebsd/p4/freebsd/ObsoleteFiles.inc	2007-11-18 04:16:28.000000000 -0600
> +++ ObsoleteFiles.inc	2007-11-20 20:37:39.000000000 -0600
> @@ -14,6 +14,12 @@
> # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last.
> #
>
> +# 200711XX: Disabled installing static versions of libkse by default
> +.if ${DEFAULT_THREAD_LIB} != "libkse" && ${MK_LIBTHR} != "no"
> +OLD_FILES+=usr/lib/libkse.a
> +OLD_FILES+=usr/lib/libkse_p.a
> +OLD_FILES+=usr/lib/libkse_pic.a
> +.endif
> # 20071108: Removed very crunch OLDCARD support file
> OLD_FILES+=etc/defaults/pccard.conf
> # 20071104: Removed bsdlabel, fdisk and gpt from rescue on ia64.
>



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