This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ready for 2.3?


On Mon, Sep 30, 2002 at 07:21:19PM +0200, Marcus Brinkmann wrote:
> On Mon, Sep 30, 2002 at 10:14:22AM -0700, Ulrich Drepper wrote:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> > 
> > Marcus Brinkmann wrote:
> > > and spent the whole last week on compiling glibc
> > > 'gain and again until I got the overzealous hidden symbols digged out of
> > > their hiding place.  A couple of other fixes are already committed by
> > > Roland in the last days.
> > 
> > Why overzealous?  Why do you need to call implementations outside the libc?
> 
> I am not sure I understand the last question.  But the ld.so in the Hurd
> needs to get the glibc definitions of __libc_read, __libc_write, __xstat64,
> __fxstat64, __getpid etc to make dlopen work properly at runtime.  The full
> list of shared functions is in sysdeps/mach/hurd/Versions.  Making them
> hidden prototypes causes them to not get a PLT entry in ld.so, which breaks
> stuff (because the minimal implementation in sysdeps/mach/hurd/dl-sysdeps.c
> is called instead the glibc definition).
> 
> After I got the PLT entries in ld.so, and made sure that the glibc functions
> where exported under their real name (and not __GI_ prefixed), everything
> worked as expected.  dlopen (and thus nss) works again.

So, if it is only ld.so calls which need to go through PLT, then you
should change only ld.so calls.
And as Ulrich pointed out, you have to do it for Hurd only, there is
no reason why Linux should be bitten because of that.

Basically (if Roland puts in his "all ld.so objects were built
with IS_IN_rtld" patch), you should keep all the libc_hidden_proto's and
libc_hidden_def's, but conditionally for Hurd get rid of the problematic
rtld_hidden_proto/rtld_hidden_def. Some prototypes use
#if !defined NOT_IN_libc || defined IS_IN_rtld
hidden_proto (foo)
hidden_proto (bar)
#endif
In that case for Hurd you need to limit it to !define NOT_IN_libc.

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]