Hi,

On Mon, 8 Oct 2007 00:44:21 +0200
Volker Armin Hemmann <[EMAIL PROTECTED]> wrote:

> ok, example. I might be totally wrong, so don't believe me:
>  The splice system call was added with 2.6.17 and corresponding headers. If 
> you build an application that has optinal (on compile time) support for this, 
> but downgrade the headers after that to say... 2.6.10 you might see funny 
> stuff happening.

Nah, you won't. Nothing depends on the headers on runtime, they just
matter on compile time. After downgrading, when you compile new stuff,
it will use the now older headers, i.e. it will probably rely on older
feature sets.

Whether the software compiled against newer headers will still work
depends solely on the kernel. In your example, when you also decide to
run a 2.6.10 kernel, then the software relying on newer features (due
to the newer headers on compile time) will have problems.

> Headers are backward compatible, not forward compatible.

That's not true how you have put it. But it is a misleading thing, all
this. The _kernel_ has a backward compatible interface to userland
(most of the time, and almost definitely regarding the syscalls).
That's why you can still run that old statically compiled binary from
19-you-know-what. The _headers_ on the opposite belong more to the
userland software camp. They are what userland knows about the kernel
at compile time. So _if_ the kernel keeps backward compatibility, the
_headers_ are forward compatible.
(The underscoring is meant as emphasis, but not to be harsh)

> glibc is similar - just try to downgrade glibc. You can't, portage won't 
> allow 
> it.

That's the same for downgrading the kernel and it works the same:
Userland is compiled against newer glibc headers.

-hwh

(It's all somewhat complicated, that's why I thought the short
one-liner wasn't a definite answer...)
-- 
[EMAIL PROTECTED] mailing list

Reply via email to