Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 May 2008 20:54:09 -0400 (EDT)
From:      Daniel Eischen <deischen@freebsd.org>
To:        Robert Watson <rwatson@freebsd.org>
Cc:        freebsd-hackers@freebsd.org, Mike Meyer <mwm@mired.org>, Carl Shapiro <carl.shapiro@gmail.com>, Julian Elischer <julian@elischer.org>
Subject:   Re: binary compatibility query
Message-ID:  <Pine.GSO.4.64.0805102050340.4851@sea.ntplx.net>
In-Reply-To: <20080510213323.E35578@fledge.watson.org>
References:  <4dcb5abd0805050540m292b319aw52aa2cb8ba018e12@mail.gmail.com> <481F0DB3.9070505@FreeBSD.org> <481F48EE.3050806@elischer.org> <481F4EED.2030300@FreeBSD.org> <4dcb5abd0805051132o77d68e36u3f0ad38630a02afd@mail.gmail.com> <481F6990.9010007@elischer.org> <20080510134833.J63808@fledge.watson.org> <20080510152718.788d638f@bhuda.mired.org> <20080510213323.E35578@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 10 May 2008, Robert Watson wrote:

> On Sat, 10 May 2008, Mike Meyer wrote:
>
>> On Sat, 10 May 2008 13:50:48 +0100 (BST)
>> Robert Watson <rwatson@FreeBSD.org> wrote:
>>> On Mon, 5 May 2008, Julian Elischer wrote:
>>>> basically if you rely only on the standard posix interfaces and don't do
>>>> anything exotic then you will "probably" be safe.
>>> For "raw" UNIX applications, this rule of thumb works well, but not for 
>>> applications that depend on third-party libraries, languages, or daemons.
>> 
>> You can lose the dependency on third party libraries by compiling your 
>> application to a static binary. That will also help with the few breakages 
>> that occur with the system libraries, and with compatibility across major 
>> releases using the backwards compatX packages.
>
> However, if you do that, we'll probably shoot you in the foot by removing 
> kernel support for the thread library you are linking against.  Since the 
> removal of KSE, it appears our ABI compatibility promise is at the libc or 
> libpthread layer, and not at the system call layer.  We haven't done the 
> necessary compat work to let 6.x binaries using libkse work on an 8.x system 
> yet, but will presumably do that with a backport of libthr to a 6.x userspace 
> (i.e., 6.x library version).
>
> On almost all (serious) OS's I'm aware of, static linking for applications is 
> essentially forbidden for that reason -- vendors promise library 
> compatibility, not system call compatibility, and rely on being able to 
> change the implementations of system calls.

I've brought this up before - we should seriously look at removing
our static libraries, or at least make the statement that static
binaries are not guaranteed to be ABI compatible.

-- 
DE



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