This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
Re: A bug in the dynamic linker
- To: "H . J . Lu" <hjl at lucon dot org>
- Subject: Re: A bug in the dynamic linker
- From: Ulrich Drepper <drepper at redhat dot com>
- Date: 25 Jun 2001 21:13:39 -0700
- Cc: GNU C Library <libc-alpha at sourceware dot cygnus dot com>
- References: <20010622152858.A29516@lucon.org>
- Reply-To: drepper at cygnus dot com (Ulrich Drepper)
"H . J . Lu" <hjl@lucon.org> writes:
> _dl_catch_error has
>
> /* We get here only if we longjmp'd out of OPERATE. */
> tsd_setspecific (old);
> *objname = c.objname;
> *errstring = c.errstring;
> return errcode == -1 ? 0 : errcode;
>
> _dl_signal_error will set the env fieldd to -1 if errcode == 0. In
> that case, _dl_catch_error will return 0.
Since you haven't given more context (especially, where
_dl_catch_error is called) I cannot analyze this more. I looked at
some code and found the uses of this function in dl-deps.c not
correct. I've fixed this. But not the way you did.
The way _dl_catch_error is used is strange (at best). It has
historical reasons and should be cleaned up some day. But not now.
Stabilization is key.
Take a look at the changes I just checked in and let me know whether
they solve your problem. And if possible, provide a test case.
--
---------------. ,-. 1325 Chesapeake Terrace
Ulrich Drepper \ ,-------------------' \ Sunnyvale, CA 94089 USA
Red Hat `--' drepper at redhat.com `------------------------