Re: RFC: libkse*.a in 7.0




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.

_______________________________________________
freebsd-arch@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-arch
To unsubscribe, send any mail to "freebsd-arch-unsubscribe@xxxxxxxxxxx"



Relevant Pages

  • Re: RFC: libkse*.a in 7.0
    ... support for the syscalls and kernel data structures required by libkse. ... It's worth noting that some other mainstream operating systems work hard to ...
    (freebsd-arch)
  • RFC: libkse*.a in 7.0
    ... support for the syscalls and kernel data structures required by libkse. ...
    (freebsd-arch)
  • Re: support for __thread
    ... > libkse is ready to add support for it but I believe there's ... > some additional work to be done in rtld-elf first. ... I think libkse already obeys the tls spec WRT %gs; ... how to fix the compiler. ...
    (freebsd-hackers)
  • Re: RFC: libkse*.a in 7.0
    ... support for the syscalls and kernel data structures required by libkse. ... KSE support is almost totally contained within kern_kse.c at this time. ...
    (freebsd-arch)
  • Re: RFC: libkse*.a in 7.0
    ... support for the syscalls and kernel data structures required by libkse. ... KSE support is almost totally contained within kern_kse.c at this time. ...
    (freebsd-arch)