cvs commit: src/lib/libc/gen fts-compat.c fts-compat.h

Yar Tikhiy yar at
Fri Aug 24 14:44:34 PDT 2007

On Fri, Aug 24, 2007 at 03:14:53PM -0400, Daniel Eischen wrote:
> On Fri, 24 Aug 2007, Yar Tikhiy wrote:
> >On Fri, Aug 24, 2007 at 11:03:12AM -0400, Daniel Eischen wrote:
> >>On Thu, 23 Aug 2007, Yar Tikhiy wrote:
> >>
> >>>yar         2007-08-23 05:09:31 UTC
> >>>
> >>>FreeBSD src repository
> >>>
> >>>Modified files:
> >>>  lib/libc/gen         fts-compat.c fts-compat.h
> >>>Log:
> >>>Forced commit to note repo-copy:
> >>>
> >>>These files have been repo-copied from src/include/fts.h
> >>>and src/lib/libc/gen/fts.c to serve as a base for 4.4BSD
> >>>compatible versions of fts(3) functions to be preserved
> >>>through libc symbol versioning while the default versions
> >>>undergo ABI-breaking extension to support big file trees.
> >>
> >>When are you going to break the ABI?  After 7.0 is tagged
> >>and released?  If you break the ABI before, you don't need
> >>or want to have the compat versions; the libraries have already
> >>been bumped in prep for release.  I don't think we want to
> >>use symbol versioning as a crutch for -current users; the
> >>version definitions are meant for public releases only.
> >
> >The reason for exercising symbol versions right now is that "make
> >installworld" is sensitive to the fts(3) ABI.  If the ABI is just
> >broken w/o special measures, "make installworld" will fail in the
> >middle and leave you with a botched system.  It goes as follows:
> >
> >- "make installworld" copies the old /usr/bin/find and some other
> > tools to /tmp/ for use during the install
> >- libc is overwritten by its new instance, with new fts(3) ABI
> >- the old find(1) is run by installworld and dumps core immediately.
> Why don't you make find and the install tools static.

They are just copied from /usr/bin and friends before the actual
install process starts.  I had the idea of using newly built tools
with LD_LIBRARY_PATH set to ${WORLDTMP}/{lib,usr/lib} for that
purpose, but its discussion with ru@ didn't end up in a definite
conclusion whether it was feasible.  I haven't had time to experiment
with my idea yet.

> >Earlier the problem was to be avoided by bumping libc version so
> >that the old libc is kept, and now I chose symbol versioning to get
> >around it.  Do you think there is a different way?
> Yes, you wait until after release to do this.  Look at it

Excuse me, but I don't want to have the bug I'm trying to fix
(bin/104458) in 7.0-RELEASE.  I'm certain we'll work out a way to
have the bug fixed, with or without symbol versioning.

> this way: if there wasn't symbol versioning and libc was
> already bumped, how would you solve the problem?  You
> wouldn't bump libc again, right?

I've believed that symbol versioning should help us to fix bugs, not
prevent us from doing so.  Not having to bump the libc version each
time was the main reason to have symbol versioning, wasn't it?


More information about the cvs-src mailing list