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