This is the mail archive of the libc-alpha@sourceware.cygnus.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]

Re: [Various] libc/1609: Error in 'make check' origtest with testobj1.so


> 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>

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