about summary refs log tree commit diff
path: root/elf/dl-addr.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-07-17 22:09:30 +0000
committerUlrich Drepper <drepper@redhat.com>2000-07-17 22:09:30 +0000
commit8114530a31e03aec4085f79971c2a3b9e940eae3 (patch)
treeb0b003fab3e4416cb3c35281827a377365a04e34 /elf/dl-addr.c
parent7f53da19c11c141d4d4d24417b3a72bbaf755d2c (diff)
downloadglibc-8114530a31e03aec4085f79971c2a3b9e940eae3.tar.gz
glibc-8114530a31e03aec4085f79971c2a3b9e940eae3.tar.xz
glibc-8114530a31e03aec4085f79971c2a3b9e940eae3.zip
Update.
2000-07-17  Bruno Haible  <haible@clisp.cons.org>

	* iconv/gconv_open.c (__gconv_open): Initialize the __data
	field of struct __gconv_trans_data differently.  Don't pass NULL to
	trans_init_fct.  Simplify list append operation.

2000-07-14  Bruno Haible  <haible@clisp.cons.org>

	* intl/dcigettext.c (dcigettext): Call plural_eval on all platforms,
	not only those having tsearch.

2000-07-17  Ulrich Drepper  <drepper@redhat.com>

	* locale/langinfo.h: Add placeholder values in enum for removed
	LC_CTYPE entries.

2000-07-17  Jakub Jelinek  <jakub@redhat.com>

	* elf/dl-addr.c (_dl_addr): Keep searching in the _dl_loaded
	chain if the PHDR check fails.

2000-07-17  Mark Kettenis  <kettenis@gnu.org>

	* nss/getent.c (print_hosts): Make sure we always print a space
	between numeric addresses and hostnames.

2000-07-17  Wolfram Gloger  <wg@malloc.de>

	* malloc/malloc.c (chunk_alloc): Use mmap_chunk() only if allowed,
	i.e. if n_mmaps_max>0.

2000-07-16  Mark Kettenis  <kettenis@gnu.org>

	* resolv/netdb.h (AI_V4MAPPED, AI_ALL, AI_ADDRCONFIG): Adjust
	values to remove possible clash with other AI_* constants.
	(AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST): Define as
	hexadecimal constants to stress the fact they're in fact
	bit flags.

2000-07-15  Mark Kettenis  <kettenis@gnu.org>

	* nss/getXXent_r.c [NEED__RES]: Include <resolv.h>.
	(SETFUNC_NAME, ENDFUNC_NAME, REENTRANT_GETNAME): Use res_ninit
	instead of res_init.
Diffstat (limited to 'elf/dl-addr.c')
-rw-r--r--elf/dl-addr.c32
1 files changed, 15 insertions, 17 deletions
diff --git a/elf/dl-addr.c b/elf/dl-addr.c
index d3adf12c67..2fda238cfb 100644
--- a/elf/dl-addr.c
+++ b/elf/dl-addr.c
@@ -36,27 +36,25 @@ _dl_addr (const void *address, Dl_info *info)
   for (l = _dl_loaded; l; l = l->l_next)
     if (addr >= l->l_map_start && addr < l->l_map_end)
       {
+	/* We know ADDRESS lies within L if in any shared object.
+	   Make sure it isn't past the end of L's segments.  */
+	size_t n = l->l_phnum;
+	if (n > 0)
+	  {
+	    do
+	      --n;
+	    while (l->l_phdr[n].p_type != PT_LOAD);
+	    if (addr >= (l->l_addr +
+			 l->l_phdr[n].p_vaddr + l->l_phdr[n].p_memsz))
+	      /* Off the end of the highest-addressed shared object.  */
+	      continue;
+	  }
+
 	match = l;
 	break;
       }
 
-  if (__builtin_expect (match != NULL, 1))
-    {
-      /* We know ADDRESS lies within MATCH if in any shared object.
-	 Make sure it isn't past the end of MATCH's segments.  */
-      size_t n = match->l_phnum;
-      if (n > 0)
-	{
-	  do
-	    --n;
-	  while (match->l_phdr[n].p_type != PT_LOAD);
-	  if (addr >= (match->l_addr +
-		       match->l_phdr[n].p_vaddr + match->l_phdr[n].p_memsz))
-	    /* Off the end of the highest-addressed shared object.  */
-	    return 0;
-	}
-    }
-  else
+  if (match == NULL)
     return 0;
 
   /* Now we know what object the address lies in.  */