Re: [RFC][PATCH 0/2] KABI example conversion and cleanup

Rob Landley
2006-03-27T19:49:24Z

On Monday 27 March 2006 1:19 am, Avi Kivity wrote:
> Rob Landley wrote:
> > On Sunday 26 March 2006 12:57 pm, Avi Kivity wrote:
> >> This is true for a small enough application. But things grow, libraries
> >> are added, and includes keep pulling other includes in. Sooner or later
> >> you'll have a collision.
> >
> > And you'll fix it when it happens. Fact of life.
>
> Fixing it will mean breaking either the ABI of the kernel or of the
> large library you pulled in.
>
> An ABI bug causes pain far beyond its size. Look at the trouble caused
> when some interfaces uses unsigned instead of u64. In kernel APIs, you
> just replace the type, but in the ABI, you add a new syscall or do some
> other hack.

One of busybox's users has a libc built with improperly sanitized kernel
headers that leak all the kernel's CONFIG_ symbols into the standard
namespace, and we found out because one of them clashes with a busybox CONFIG
symbol and it broke his build.

The easiest thing to do was rename our CONFIG symbol, which we did. (And
asked him to fix his system, which he didn't.) This was a while ago now...

> Much better to get it right the first time, even if it's ugly. It's an
> ABI, not a beauty contest nominee.

I've been cc'd on all this because I cared about Mazur's kernel headers enough
to email him several times. But I can't say I really care about this new
project that's taken over the discussion.

Either it doesn't break the existing interface, in which case it has no impact
on me and I can ignore it, or it requires all existing userspace programs
that care about the current state of things to change to care about your new
thing instead, in which case it's probably doomed. Unless the kernel picks
it up and imposes a flag day, at which point I'll find out about it from LWN
like everybody else.

Either way, it's not sounding like something I can grab and build uClibc
systems with any time soon, the way I could use Mazur's headers to build
uClibc. I'll probably wind up using the gentoo headers when the 2.6.14
version ships.

http://www.gentoo.org/cgi-bin/viewcvs.cgi/src/patchsets/gentoo-headers/?root=gentoo

*shrug*. Good luck with whatever it is you're trying to accomplish.

Rob
--
Never bet against the cheap plastic solution.