Is the FreeBSD ABI compatibility policy documented anywhere

Alex Goncharov alex-goncharov at comcast.net
Sat Oct 10 18:11:10 UTC 2009


,--- You/Dag-Erling (Sat, 10 Oct 2009 19:11:50 +0200) ----*
| "Simon L. Nielsen" <simon at FreeBSD.org> writes:
| > It's not entirely that simple.  The ABI on a stable branch like 7.x
| > should be backward compatible, but there isn't a guarantee of forward
| > compatibility.  IE, 7.0 binary should be able to run on 7.x, but a 7.2
| > binary might not run on 7.0.  It should be more or less the same with
| > the API's.
| 
| Correct, but we're getting closer to that now that we have symbol
| versioning - although we won't reach 100% until we have versioned
| symbols in *all* libraries, which is currently not the case.  Even then,
| a developer might break the ABI by mistake, but hopefully we'd catch
| that before it made it into a release.

It's important to note that symbol compatibility is not the whole
thing -- the behaviour on exceptions may be equally important to some
applications.  E.g. CMUCL code has to handle different ways to notify
of memory protection failures this way:

    #if __FreeBSD_version < 700004
    #define PROTECTION_VIOLATION_SIGNAL SIGBUS
    #define PROTECTION_VIOLATION_CODE BUS_PAGE_FAULT
    #else
    #define PROTECTION_VIOLATION_SIGNAL SIGSEGV
    #define PROTECTION_VIOLATION_CODE SEGV_ACCERR
    #endif

A CMUCL binary built on a pre-7.1 (?) release of FreeBSD, will crash
almost immediately when run on 7.1 (well, "if memory serves").

-- Alex -- alex-goncharov at comcast.net --


More information about the freebsd-hackers mailing list