Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 May 1998 06:51:36 +0000 (GMT)
From:      Terry Lambert <tlambert@primenet.com>
To:        jb@cimlogic.com.au (John Birrell)
Cc:        tlambert@primenet.com, current@FreeBSD.ORG
Subject:   Re: Undefined symbol "___error"
Message-ID:  <199805140651.XAA22759@usr05.primenet.com>
In-Reply-To: <199805140324.NAA22813@cimlogic.com.au> from "John Birrell" at May 14, 98 01:24:38 pm

next in thread | previous in thread | raw e-mail | index | archive | help
> > 
> > Actually, it's a define in a header file, si it's "recompiled".
> 
> No, it's "relinked" so that a program will know to use the later libc.
> The problem here is not that the libc major number needs to be bumped,
> but *all* other libraries that use errno.h need a major number bump.
> Bruce pointed this out.

I don't understand this.

How will this turn "int errno" references into "(* __error())" function
return value pointer dereferences?


> Bruce wants the change backed out. I haven't heard from anyone else.
> Should I bump the major number of all the shared libraries in the
> FreeBSD tree? Should I back out the change and forget about making future
> objects thread-aware? Should I do nothing?

I would be very, very tempted to use this as an excuse to move to ELF
at this point, making the change in the ELF version of the library.

Barring that, I'd be tempted to say "bump the minor numbers to force
a recompile AND stub the reference", but that's just a cop-out for
not making the library dependencies explicit.  One very annoying thing
here is that ld is *still* broken, and a second order dependency of
a library on a library isn't flagged atcompile time.  When linking,
ld should act like RTLD_NOW was specified, at least for the graph of
symbols used (program calls foo in lib1 calls fee in lib2 requires
fee in lib2 exist for program to link).

Other than that... well, -current is -current, and you should have
to expect the interfaces to change, and live with it.  It seems to
me that the libc version number bump that happened earlier should
not have happened until the tree was locked down prepatory to the
tagging of a 3.0 release, and then everything is bumped at once.

I think library version number bumping is supposed to be limited to
changes in the interface *exported* by a library, not those *imported*
by a library.

As another plea for ELF, I'll note that it's possible to implement
sections, and choose sections based on the minor version number
expected by the client's library version selection.

PS: Sun has started using version numbers on ld.so's as well as
libraries; you could do a similar fixup using a.out .so's if FreeBSD
followed suit.


					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199805140651.XAA22759>