All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thilo Fromm <t.fromm@dresearch.de>
To: openembedded-devel@lists.openembedded.org
Subject: Re: Kernel Headers Quality Issue
Date: Fri, 14 May 2010 11:25:30 +0200	[thread overview]
Message-ID: <4BED170A.1070907@dresearch.de> (raw)
In-Reply-To: <20100510190024.GA12534@gmail.com>

Hello *.*,

>>> Graeme Gregory in <20100505094242.GF2444@xora-desktop.xora.org.uk>:
>>>
>>> [Steffen Sledz]
>>>  > > It seem's not to be possible to use DEFAULT_PREFERENCE_hipox in the
>>>  > > linux-libc-headers recipes. So what's the right way to handle this?
>>>  > > Something like PREFERRED_VERSION_linux-libc-headers_hipox = "2.6.24"
>>>  > > in angstrom-2008.1.conf?
>>>  >
>>> [Graeme Gregory]
>>>  > I thought glibc was supposed to gracefully fall back on missing
>>>  > syscalls?
>>>
>>> Glibc is compiled against 2.6.31 headers, which is one of our main 
>>> issues here. It only ever *runs* with a 2.6.24 kernel on the target 
>>> system, though. So it cannot know about missing syscalls until runtime.
>> So, I think some of the confusion here stems from confusion about (and I
>> don't know the right answer off-hand) how glibc handles the
>> --with-kernel=VERSION stuff.
> 
> Well based on --with-kernel supplied to it during build time it 
> configures syscalls that are available in that version of kernel.

No it doesn't. Quoting the documentation of "--enable-kernel=VERSION" 
from <http://sourceware.org/ml/libc-announce/2001/msg00000.html>:

-------------
One Linux systems the configure script has a new option
`--enable-kernel' (find the documentation in the INSTALL file).  This
option allows one to strip out compatibility code for older kernel
versions.  This is of interest since configuring for a 2.4.x kernel
reduces the libc size by about 1%.  This is no high percentage but all
the code gone is in the by far most often used functions.  The
compatibility code is needed because of poor design decisions of the
kernel developers who constantly have to adjust the interface to new
requirements.  If you never expect to run kernel versions older than
the one used at compile time of the library it is a good idea to pass
`--enable-kernel=current' to configure.  But be careful since with an
older kernel the program won't even start and the whole system might
be rendered useless (unless backup kernels are available).
-------------

What it really does is providing deprecated (very, very old) kernel 
interfaces to deprecated applications running on a very recent kernel 
(which does not provide these interfaces anymore).

> unlike uclibc which configures based on the kernel headers supplied
> to it at buildtime glibc does not assume the version to be the 
> one supplied during build but with --with-kernel you can make it
> know that it will not be run on kernel versions less than one specified
> to --with-kernel

This way Glibc can decide which legacy interfaces to provide. It will be 
slightly less bloated e.g. when providing only 2.6 series compatibility 
(so applications which use 2.4 kernel interfaces deprecated by 2.6 won't 
compile or run).

> so it should be ok to compile glibc using newer version of kernel and run
> it on an older version of kernel.

No it isn't. --enable-kernel=VERSION provides kernel ABI backwards 
compatibility to applications. *At least* the kernel ABI described in 
the headers provided to glibc during compile time must be present at 
runtime.

Glibc simply has no other means than the kernel headers to figure out 
which kernel ABI functions will really be there at runtime. Glibc cannot 
figure out at runtime that it runs on an older kernel which lacks *some* 
of the ABI glibc relies on. It can only rely on the information in the 
kernel headers provided at compile time.

Even worse: At runtime glibc cannot detect that some of the kernel 
interfaces are different or not present at all. It will blindly use the 
interfaces it knows from its header files, resulting in strange 
application behaviour in these corner cases.

Regards,
Thilo

-- 
Dipl.-Ing (FH) Thilo Fromm, MSc., Embedded Systems Developer
DResearch Digital Media Systems GmbH
Otto-Schmirgal-Str. 3, D-10319 Berlin, Germany
Amtsgericht: Berlin Charlottenburg, HRB:54412
Tel: +49 (30) 515 932 228   mailto:t.fromm@dresearch.de
Fax: +49 (30) 515 932 77 http://www.dresearch.de



  reply	other threads:[~2010-05-14  9:27 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-05  9:36 linux vs. linux-libc-headers? Steffen Sledz
2010-05-05  9:42 ` Graeme Gregory
2010-05-05 10:00   ` Steffen Sledz
2010-05-05 10:05     ` Phil Blundell
2010-05-05 14:50       ` Steffen Sledz
2010-05-06 10:15         ` [PATCH] angstrom-2008.1: use linux-libc-headers 2.6.24 for hipox machine Steffen Sledz
2010-05-06 10:42           ` Koen Kooi
2010-05-06 10:47             ` Steffen Sledz
2010-05-07  6:59               ` Steffen Sledz
2010-05-07  7:23                 ` Koen Kooi
2010-05-07  7:35                   ` Steffen Sledz
2010-05-10  7:36                     ` Steffen Sledz
2010-05-10  8:34                       ` Koen Kooi
2010-05-10 16:46                         ` Tom Rini
2010-05-06 12:03             ` Steffen Sledz
2010-05-07  9:03         ` linux vs. linux-libc-headers? Phil Blundell
2010-05-10  9:15       ` Steffen Sledz
2010-05-12 10:10         ` Phil Blundell
2010-05-10 14:53 ` Kernel Headers Quality Issue (was: linux vs. linux-libc-headers?) Thilo Fromm
2010-05-10 16:55   ` Tom Rini
2010-05-10 19:00     ` Khem Raj
2010-05-14  9:25       ` Thilo Fromm [this message]
2010-05-14 13:05         ` Kernel Headers Quality Issue Phil Blundell
2010-05-11  7:19     ` Thilo Fromm
2010-05-10 19:14   ` Kernel Headers Quality Issue (was: linux vs. linux-libc-headers?) Tom Rini
2010-05-11  7:42     ` Kernel Headers Quality Issue Steffen Sledz
2010-05-11 14:27       ` Tom Rini
2010-05-12  6:02         ` Steffen Sledz
2010-05-12 15:23           ` Tom Rini
2010-05-12 16:53           ` Mark Brown
2010-05-13 11:40           ` Phil Blundell
2010-05-14  9:59             ` Thilo Fromm
2010-05-14 10:25               ` Phil Blundell
2010-05-14 11:40                 ` Thilo Fromm
2010-05-14 12:38                   ` Phil Blundell
2010-05-18  0:14                   ` Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BED170A.1070907@dresearch.de \
    --to=t.fromm@dresearch.de \
    --cc=openembedded-devel@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.