This is the mail archive of the
libc-alpha@sourceware.cygnus.com
mailing list for the glibc project.
Re: [Various] libc/1609: Error in 'make check' origtest with testobj1.so
- To: solar at false dot com
- Subject: Re: [Various] libc/1609: Error in 'make check' origtest with testobj1.so
- From: Geoff Keating <geoffk at cygnus dot com>
- Date: Fri, 17 Mar 2000 11:45:57 -0800
- CC: drepper at cygnus dot com, jrenken at sandwich dot net, libc-alpha at sourceware dot cygnus dot com, aj at suse dot de
- References: <200003170437.HAA05624@false.com>
> From: Solar Designer <solar@false.com>
> Date: Fri, 17 Mar 2000 07:36:59 +0300 (MSK)
> Cc: jrenken@sandwich.net, libc-alpha@sourceware.cygnus.com, aj@suse.de
> --- glibc-2.1.3/elf/dl-open.c.orig Fri Mar 17 03:28:31 2000
> +++ glibc-2.1.3/elf/dl-open.c Fri Mar 17 06:09:18 2000
> @@ -106,6 +106,7 @@
> if (l->l_addr != 0 /* Make sure we do not currently set this map up
> in this moment. */
> && caller >= (const void *) l->l_addr
> + && caller < (const void *) l->l_map_end
> && (call_map == NULL || call_map->l_addr < l->l_addr))
> call_map = l;
It's surely wrong that this code is using l_addr. It should be using
l_map_start. It's always wrong to compare l_addr with anything,
because it need have no relationship to where the object is actually loaded.
However, be aware that l_map_* are not always initialised; they don't
get set for ld.so itself. This would be easy to fix.
--
- Geoffrey Keating <geoffk@cygnus.com>