9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: 9fans@cse.psu.edu
Subject: Re: [9fans] acme, rio workalike available in plan 9 ports
Date: Fri, 23 Apr 2004 10:29:48 -0500	[thread overview]
Message-ID: <20040423152948.GA23473@lst.de> (raw)
In-Reply-To: <Pine.LNX.4.44.0404230838480.19442-100000@maxroach.lanl.gov>

> Let's take program 'a', which depends on stat. In the new order of gcc,
> when built, 'a' will depend on stat from glib 2.0. A new stat comes along
> with fixes. It gets built into glibc 2.1. You install glibc 2.1. Program
> 'a', unless I rebuild or replace it, will be using the old stat. Of
> course, I might think that the shared library has fixed all binaries using
> stat, and I'm wrong -- or am I right? Is the V1 stat just a wrapper? who
> knows? And do you cover all the cases?

Stop here.  You don't get a new symbol version just because your new
version ends up in a new glibc.  so unless your fix changes the
interface to stat it will retain it's old symbol version.  Bumping the
symbol version is an explicit action of the program author.  And because
of the maintaince issue they rewrite the old version as a wrapper around
the new one in every case I've seen so far.  If this wasn't the case
_and_ the author wouldn't update the version that would be considered a
huge bug indeed.   But that's not what happens in real life.

I've looked for an example that shows this without too much code and
while we're at it shows some glibc braindamage (messing up kernel
syscalls when translating them to library calls), and that would be the
sched_getaffinity call, implemented in
sysdeps/unix/sysv/linux/sched_getaffinity.c.

We have a routine called __sched_getaffinity_new implementing a small
wrapper for the sched_getaffinity syscalls.  With

versioned_symbol (libc, __sched_getaffinity_new, sched_getaffinity,
                  GLIBC_2_3_4);

it's exported as sched_getaffinity for the symbol version GLIBC_2_3_4.

Then

int
attribute_compat_text_section
__sched_getaffinity_old (pid_t pid, cpu_set_t *cpuset)
{
  /* The old interface by default assumed a 1024 processor bitmap.  */
   return __sched_getaffinity_new (pid, 128, cpuset);
}
compat_symbol (libc, __sched_getaffinity_old, sched_getaffinity, GLIBC_2_3_3);

implements the older version ontop of the new one.


  reply	other threads:[~2004-04-23 15:29 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-04-20 23:04 boyd, rounin
2004-04-20 23:18 ` matt
2004-04-20 23:26   ` Geoff Collyer
2004-04-20 23:28     ` boyd, rounin
2004-04-20 23:48     ` matt
2004-04-20 23:59       ` Charles Forsyth
2004-04-21  3:18         ` Bruce Ellis
2004-04-21  8:51           ` matt
2004-04-21  9:24           ` Charles Forsyth
2004-04-21  9:49           ` C H Forsyth
2004-04-21 12:14           ` boyd, rounin
2004-04-21  0:07     ` Russ Cox
2004-04-21  0:18 ` ron minnich
2004-04-21  0:19   ` boyd, rounin
2004-04-21  2:09     ` ron minnich
2004-04-21  2:20       ` boyd, rounin
2004-04-21  3:43         ` Ronald G. Minnich
2004-04-23  8:55   ` Christoph Hellwig
2004-04-23  8:59     ` boyd, rounin
2004-04-23 15:03     ` ron minnich
2004-04-23 15:29       ` Christoph Hellwig [this message]
2004-04-23 15:54         ` ron minnich
2004-04-23 16:20           ` Joel Salomon
2004-04-23 17:03             ` ron minnich
2004-04-23 16:47           ` Christoph Hellwig
2004-04-23 17:04             ` ron minnich
2004-04-23 17:52               ` Christoph Hellwig
2004-04-21  0:40 ` andrey mirtchovski
2004-04-21  3:25   ` Bruce Ellis
  -- strict thread matches above, loose matches on Subject: below --
2004-04-21  0:38 Charles Forsyth
2004-03-21 21:45 Noah Evans
2004-03-21 22:15 ` andrey mirtchovski
2004-03-21 20:43 Andrey S. Kukhar
2004-03-21 15:57 Noah Evans
2004-03-21  5:07 Noah Evans
2004-03-21  5:25 ` Russ Cox
2004-03-21  6:12 ` Scott Schwartz
2004-03-21 14:02   ` Russ Cox
2004-03-21  4:51 Russ Cox
2004-03-21 21:03 ` andrey mirtchovski
2004-03-22 16:30 ` Axel Belinfante
2004-03-23  9:59   ` Bengt Kleberg
2004-03-23 12:23     ` boyd, rounin
2004-03-23 13:17       ` David Presotto
2004-03-23 13:30         ` boyd, rounin
2004-03-23 15:04           ` Fco.J.Ballesteros
2004-03-23 15:39         ` a
2004-03-23 15:09     ` Russ Cox
2004-03-23 15:12       ` Charles Forsyth
2004-03-23 15:29         ` Russ Cox
2004-03-23 15:13       ` Charles Forsyth
2004-03-23 15:39       ` Axel Belinfante
2004-03-23 15:49         ` a
2004-03-23 16:23           ` Russ Cox
2004-03-23 16:27             ` Axel Belinfante
2004-03-23 16:54             ` a
2004-04-01 10:50             ` Bengt Kleberg
2004-04-01 13:24               ` Russ Cox
2004-04-01 13:54                 ` Scott Schwartz
2004-04-01 14:33                   ` boyd, rounin
2004-04-01 16:14                   ` Russ Cox
2004-04-01 15:25                     ` boyd, rounin
2004-04-02  9:29                 ` Bengt Kleberg
2004-04-02 10:09                   ` Bengt Kleberg
2004-04-02 11:15                     ` Steve Simon
2004-04-02 15:24                       ` boyd, rounin
2004-04-19 10:04                       ` Bengt Kleberg
2004-04-02 11:55                     ` C H Forsyth
2004-04-02 14:30                   ` Russ Cox
2004-04-02 14:53                     ` C H Forsyth
2004-04-19 10:04                     ` Bengt Kleberg
2004-04-19 11:07                       ` Steve Simon
2004-04-20  8:38                         ` Bengt Kleberg
2004-04-20 12:12                           ` boyd, rounin
2004-04-20 12:20                             ` lucio
2004-04-20 12:32                               ` boyd, rounin
2004-04-20 12:58                                 ` lucio
2004-04-20 13:03                                   ` lucio
2004-04-21  9:03                                   ` Bengt Kleberg
2004-04-21  9:17                                     ` Charles Forsyth
2004-04-21  9:02                               ` Bengt Kleberg
2004-04-21  9:02                             ` Bengt Kleberg
2004-04-21  9:28                               ` lucio
2004-04-21 13:53                               ` boyd, rounin
2004-04-19 15:00                       ` Russ Cox
2004-04-19 18:51                         ` boyd, rounin
2004-04-20  8:38                         ` Bengt Kleberg
2004-04-20 12:15                           ` boyd, rounin
2004-04-20 14:56                             ` ron minnich
2004-04-20 17:43                               ` Eli Collins
2004-04-20 15:51                                 ` ron minnich
2004-04-20 17:10                                   ` jmk
2004-04-20 17:34                                     ` Eli Collins
2004-04-20 17:39                                       ` jmk
2004-04-20 19:42                                         ` boyd, rounin
2004-04-20 19:09                                     ` ron minnich
2004-04-20 16:10                                 ` Charles Forsyth
2004-04-20 16:21                                   ` ron minnich
2004-04-20 16:40                                   ` Eli Collins
2004-04-20 19:31                                     ` boyd, rounin
2004-04-20 19:20                                 ` boyd, rounin
2004-03-24 10:42         ` Axel Belinfante

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=20040423152948.GA23473@lst.de \
    --to=hch@lst.de \
    --cc=9fans@cse.psu.edu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).