Subject: Re: Text relocations in shared libs
To: None <port-sh3@netbsd.org, tech-toolchain@netbsd.org>
From: Valeriy E. Ushakov <uwe@ptc.spbu.ru>
List: tech-toolchain
Date: 12/27/2005 12:00:39
On Tue, Dec 27, 2005 at 08:51:33 +0000, Nick Hudson wrote:

> On Sunday 25 December 2005 13:02, Valeriy E. Ushakov wrote:
> [...]
> > The benefits of calling cerror via plt are not clear, b/c there's
> > little point in allowing cerror to be overridden, after all it's just
> > the error path factored out of all the syscalls.  I'm really inclined
> > to think that making cerror .protected or even .hidden is the right
> > thing to do.
> 
> Aren't there *lots* of symbols in libc that don't need to be
> exposed?  Why special case cerror and the others with text
> relocations in libc?

Well, ideally we should use version script to only export from libc.so
(and other shared libs) what's meant to be exported, but that's a
topic for another thread.

cerror is "special" in that it does not even have a defined interface,
except a private one between it and SYSCALL macros.  It's really just
a common error path factored out of syscall functions.  Pretending
that it is really exported and thus forthing all *jumps* (not even
calls) to it from the syscall functions go via PLT seems just
counterproductive.

SY, Uwe
-- 
uwe@ptc.spbu.ru                         |       Zu Grunde kommen
http://snark.ptc.spbu.ru/~uwe/          |       Ist zu Grunde gehen