binary compatibility query

Daniel Eischen deischen at freebsd.org
Sun May 11 01:18:03 UTC 2008


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 at 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


More information about the freebsd-hackers mailing list