about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog45
-rw-r--r--elf/dl-load.c2
-rw-r--r--elf/dl-open.c10
-rw-r--r--elf/ldd.bash.in2
-rw-r--r--hurd/hurdmalloc.c10
-rw-r--r--hurd/path-lookup.c4
-rw-r--r--malloc/malloc.c84
-rw-r--r--resolv/gethnamaddr.c8
-rw-r--r--sunrpc/rpcinfo.c6
-rw-r--r--sysdeps/sh/dl-machine.h4
-rw-r--r--sysdeps/unix/sysv/linux/configure6
-rw-r--r--sysdeps/unix/sysv/linux/configure.in6
-rw-r--r--sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed1
-rw-r--r--sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed1
14 files changed, 126 insertions, 63 deletions
diff --git a/ChangeLog b/ChangeLog
index 619fde28bc..3b4a87e0c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,48 @@
+2001-09-18  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/malloc.c (ptmalloc_init): Handle _environ==NULL.
+	Reported by B. D. Elliott <bde@nwlink.com> [PR libc/2541].
+
+2001-09-18  Andreas Schwab  <schwab@suse.de>
+
+	* elf/dl-load.c (_dl_map_object_from_fd): Update handling of scope
+	list, now that l_scope is a pointer.
+
+	* elf/dl-open.c (dl_open_worker): Fix thinko when enlarging the
+	scope list.
+
+2001-09-18  kaz Kojima  <kkojima@rr.iij4u.or.jp>
+
+	* sysdeps/sh/dl-machine.h (elf_machine_rela): Fix reverse condition.
+	(elf_machine_rela_relative): Add a missing declaration.
+
+2001-09-18  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed: New.
+	* sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed: New.
+	* sysdeps/unix/sysv/linux/configure.in: Add ia64 and s390
+	ldd-rewrite scripts.
+
+2001-09-18  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/ldd.bash.in: Update copyright message.
+
+2001-09-17  H.J. Lu  <hjl@gnu.org>
+
+	* hurd/hurdmalloc.c (bcopy): Removed.
+	(realloc): Replace bcopy with memcpy.
+	* hurd/path-lookup.c (file_name_path_scan): Likewise.
+	* resolv/gethnamaddr.c (map_v4v6_address): Likewise.
+	* sunrpc/rpcinfo.c (pmapdump): Likewise.
+
+	* resolv/gethnamaddr.c (getanswer): Replace bcopy with memmove.
+	(gethostbyaddr): Likewise.
+	* sunrpc/rpcinfo.c (get_inet_address): Likewise.
+
+2001-09-18  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/gnu/eval.c: Removed.
+
 2001-09-18  Andreas Jaeger  <aj@suse.de>
 
 	* sysdeps/i386/fpu/s_logbl.S: Move to ...
diff --git a/elf/dl-load.c b/elf/dl-load.c
index 48c78c32df..3e5ddc04f1 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -1136,7 +1136,7 @@ _dl_map_object_from_fd (const char *name, int fd, struct filebuf *fbp,
 
       /* Now move the existing entries one back.  */
       memmove (&l->l_scope[1], &l->l_scope[0],
-	       sizeof (l->l_scope) - sizeof (l->l_scope[0]));
+	       (l->l_scope_max - 1) * sizeof (l->l_scope[0]));
 
       /* Now add the new entry.  */
       l->l_scope[0] = &l->l_symbolic_searchlist;
diff --git a/elf/dl-open.c b/elf/dl-open.c
index f79c317da8..d10ab8ac65 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -312,7 +312,7 @@ dl_open_worker (void *a)
 	    ++runp;
 	  }
 
-	if (__builtin_expect (cnt + 1 < imap->l_scope_max, 0))
+	if (__builtin_expect (cnt + 1 >= imap->l_scope_max, 0))
 	  {
 	    /* The 'r_scope' array is too small.  Allocate a new one
 	       dynamically.  */
@@ -327,7 +327,7 @@ dl_open_worker (void *a)
 		  _dl_signal_error (ENOMEM, "dlopen", NULL,
 				    N_("cannot create scope list"));
 		imap->l_scope = memcpy (newp, imap->l_scope,
-					cnt * imap->l_scope_max);
+					cnt * sizeof (imap->l_scope[0]));
 	      }
 	    else
 	      {
@@ -339,10 +339,10 @@ dl_open_worker (void *a)
 				    N_("cannot create scope list"));
 		imap->l_scope = newp;
 	      }
-
-	    imap->l_scope[cnt++] = &new->l_searchlist;
-	    imap->l_scope[cnt] = NULL;
 	  }
+
+	imap->l_scope[cnt++] = &new->l_searchlist;
+	imap->l_scope[cnt] = NULL;
       }
 
   /* Run the initializer functions of new objects.  */
diff --git a/elf/ldd.bash.in b/elf/ldd.bash.in
index b50ee42231..0d2a9e7145 100644
--- a/elf/ldd.bash.in
+++ b/elf/ldd.bash.in
@@ -36,7 +36,7 @@ while test $# -gt 0; do
   case "$1" in
   --vers | --versi | --versio | --version)
     echo 'ldd (GNU libc) @VERSION@'
-    echo $"Copyright (C) 1999 Free Software Foundation, Inc.
+    echo $"Copyright (C) 2001 Free Software Foundation, Inc.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 Written by Roland McGrath and Ulrich Drepper."
diff --git a/hurd/hurdmalloc.c b/hurd/hurdmalloc.c
index 25bf876aa2..4839d98535 100644
--- a/hurd/hurdmalloc.c
+++ b/hurd/hurdmalloc.c
@@ -1,8 +1,6 @@
 #include <stdlib.h>
 #include <string.h>
 
-#define bcopy(s,d,n)	memcpy ((d), (s), (n)) /* No overlap handling.  */
-
 #include "hurdmalloc.h"		/* XXX see that file */
 
 #include <mach.h>
@@ -37,6 +35,10 @@
 /*
  * HISTORY
  * $Log$
+ * Revision 1.15  2001/09/19 03:04:09  drepper
+ * (bcopy): Removed.
+ * (realloc): Replace bcopy with memcpy.
+ *
  * Revision 1.14  2001/04/01 05:03:14  roland
  * 2001-03-11  Roland McGrath  <roland@frob.com>
  *
@@ -422,8 +424,8 @@ realloc(old_base, new_size)
 	 */
 	new_base = malloc(new_size);
 	if (new_base)
-	  bcopy(old_base, new_base,
-		(int) (old_size < new_size ? old_size : new_size));
+	  memcpy (new_base, old_base,
+		  (int) (old_size < new_size ? old_size : new_size));
 
 	if (new_base || new_size == 0)
 	  /* Free OLD_BASE, but only if the malloc didn't fail.  */
diff --git a/hurd/path-lookup.c b/hurd/path-lookup.c
index 19434b61a4..5c51d390f5 100644
--- a/hurd/path-lookup.c
+++ b/hurd/path-lookup.c
@@ -55,10 +55,10 @@ file_name_path_scan (const char *file_name, const char *path,
 	  if (pfx_len == 0)
 	    pfxed_name[pfx_len++] = '.';
 	  else
-	    bcopy (path, pfxed_name, pfx_len);
+	    memcpy (pfxed_name, path, pfx_len);
 	  if (pfxed_name[pfx_len - 1] != '/')
 	    pfxed_name[pfx_len++] = '/';
-	  bcopy (file_name, pfxed_name + pfx_len, file_name_len + 1);
+	  memcpy (pfxed_name + pfx_len, file_name, file_name_len + 1);
 
 	  err = (*fun)(pfxed_name);
 	  if (err == 0)
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 6722ac41c0..8279ddaf22 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -1766,49 +1766,49 @@ ptmalloc_init __MALLOC_P((void))
   secure = __libc_enable_secure;
 #ifdef _LIBC
   s = NULL;
-  {
-    char **runp = _environ;
-    char *envline;
+  if (_environ != NULL)
+    {
+      char **runp = _environ;
+      char *envline;
 
-    while (__builtin_expect ((envline = next_env_entry (&runp)) != NULL,
-			     0))
-      {
-	size_t len = strcspn (envline, "=");
-
-	if (envline[len] != '=')
-	  /* This is a "MALLOC_" variable at the end of the string
-	     without a '=' character.  Ignore it since otherwise we
-	     will access invalid memory below.  */
-	  continue;
-
-	switch (len)
-	  {
-	  case 6:
-	    if (memcmp (envline, "CHECK_", 6) == 0)
-	      s = &envline[7];
-	    break;
-	  case 8:
-	    if (! secure && memcmp (envline, "TOP_PAD_", 8) == 0)
-	      mALLOPt(M_TOP_PAD, atoi(&envline[9]));
-	    break;
-	  case 9:
-	    if (! secure && memcmp (envline, "MMAP_MAX_", 9) == 0)
-	      mALLOPt(M_MMAP_MAX, atoi(&envline[10]));
-	    break;
-	  case 15:
-	    if (! secure)
-	      {
-		if (memcmp (envline, "TRIM_THRESHOLD_", 15) == 0)
-		  mALLOPt(M_TRIM_THRESHOLD, atoi(&envline[16]));
-		else if (memcmp (envline, "MMAP_THRESHOLD_", 15) == 0)
-		  mALLOPt(M_MMAP_THRESHOLD, atoi(&envline[16]));
-	      }
-	    break;
-	  default:
-	    break;
-	  }
-      }
-  }
+      while (__builtin_expect ((envline = next_env_entry (&runp)) != NULL, 0))
+	{
+	  size_t len = strcspn (envline, "=");
+
+	  if (envline[len] != '=')
+	    /* This is a "MALLOC_" variable at the end of the string
+	       without a '=' character.  Ignore it since otherwise we
+	       will access invalid memory below.  */
+	    continue;
+
+	  switch (len)
+	    {
+	    case 6:
+	      if (memcmp (envline, "CHECK_", 6) == 0)
+		s = &envline[7];
+	      break;
+	    case 8:
+	      if (! secure && memcmp (envline, "TOP_PAD_", 8) == 0)
+		mALLOPt(M_TOP_PAD, atoi(&envline[9]));
+	      break;
+	    case 9:
+	      if (! secure && memcmp (envline, "MMAP_MAX_", 9) == 0)
+		mALLOPt(M_MMAP_MAX, atoi(&envline[10]));
+	      break;
+	    case 15:
+	      if (! secure)
+		{
+		  if (memcmp (envline, "TRIM_THRESHOLD_", 15) == 0)
+		    mALLOPt(M_TRIM_THRESHOLD, atoi(&envline[16]));
+		  else if (memcmp (envline, "MMAP_THRESHOLD_", 15) == 0)
+		    mALLOPt(M_MMAP_THRESHOLD, atoi(&envline[16]));
+		}
+	      break;
+	    default:
+	      break;
+	    }
+	}
+    }
 #else
   if (! secure)
     {
diff --git a/resolv/gethnamaddr.c b/resolv/gethnamaddr.c
index 25ae11987e..c13b1066f5 100644
--- a/resolv/gethnamaddr.c
+++ b/resolv/gethnamaddr.c
@@ -441,7 +441,7 @@ getanswer(answer, anslen, qname, qtype)
 				cp += n;
 				continue;
 			}
-			bcopy(cp, *hap++ = bp, n);
+			memmove(*hap++ = bp, cp, n);
 			bp += n;
 			buflen -= n;
 			cp += n;
@@ -738,7 +738,7 @@ gethostbyaddr(addr, len, af)
 #endif /*SUNSECURITY*/
 	hp->h_addrtype = af;
 	hp->h_length = len;
-	bcopy(addr, host_addr, len);
+	memmove(host_addr, addr, len);
 	h_addr_ptrs[0] = (char *)host_addr;
 	h_addr_ptrs[1] = NULL;
 	if (af == AF_INET && (_res.options & RES_USE_INET6)) {
@@ -899,14 +899,14 @@ map_v4v6_address(src, dst)
 	int i;
 
 	/* Stash a temporary copy so our caller can update in place. */
-	bcopy(src, tmp, INADDRSZ);
+	memcpy(tmp, src, INADDRSZ);
 	/* Mark this ipv6 addr as a mapped ipv4. */
 	for (i = 0; i < 10; i++)
 		*p++ = 0x00;
 	*p++ = 0xff;
 	*p++ = 0xff;
 	/* Retrieve the saved copy and we're done. */
-	bcopy(tmp, (void*)p, INADDRSZ);
+	memcpy((void*)p, tmp, INADDRSZ);
 }
 
 static void
diff --git a/sunrpc/rpcinfo.c b/sunrpc/rpcinfo.c
index 7f99664694..d9da989660 100644
--- a/sunrpc/rpcinfo.c
+++ b/sunrpc/rpcinfo.c
@@ -542,8 +542,8 @@ pmapdump (argc, argv)
       bzero ((char *) &server_addr, sizeof server_addr);
       server_addr.sin_family = AF_INET;
       if ((hp = gethostbyname ("localhost")) != NULL)
-	bcopy (hp->h_addr, (caddr_t) & server_addr.sin_addr,
-	       hp->h_length);
+	memcpy ((caddr_t) & server_addr.sin_addr, hp->h_addr,
+		 hp->h_length);
       else
 	server_addr.sin_addr.s_addr = inet_addr ("0.0.0.0");
     }
@@ -733,7 +733,7 @@ get_inet_address (addr, host)
 		   host);
 	  exit (1);
 	}
-      bcopy (hp->h_addr, (char *) &addr->sin_addr, hp->h_length);
+      memmove ((char *) &addr->sin_addr, hp->h_addr, hp->h_length);
     }
   addr->sin_family = AF_INET;
 }
diff --git a/sysdeps/sh/dl-machine.h b/sysdeps/sh/dl-machine.h
index ee5bb9cdbc..dc53c652d0 100644
--- a/sysdeps/sh/dl-machine.h
+++ b/sysdeps/sh/dl-machine.h
@@ -487,7 +487,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 	}
     }
 #ifndef RTLD_BOOTSTRAP
-  else if (__builtin_expect (r_type != R_SH_NONE, 0))
+  else if (__builtin_expect (r_type == R_SH_NONE, 0))
     return;
 #endif
   else
@@ -561,6 +561,8 @@ static inline void
 elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
 			   Elf32_Addr *const reloc_addr)
 {
+  Elf32_Addr value;
+
   if (reloc->r_addend)
     value = l_addr + reloc->r_addend;
   else
diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure
index b1a8df8deb..b1fb85f681 100644
--- a/sysdeps/unix/sysv/linux/configure
+++ b/sysdeps/unix/sysv/linux/configure
@@ -189,6 +189,12 @@ case "$machine" in
   i[3456]86* | m68*)
     ldd_rewrite_script=../sysdeps/unix/sysv/linux/ldd-rewrite.sed
     ;;
+  ia64*)
+    ldd_rewrite_script=../sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed
+    ;;
+  s390*)
+    ldd_rewrite_script=../sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed
+    ;;
   sparc*)
     ldd_rewrite_script=../sysdeps/unix/sysv/linux/sparc/ldd-rewrite.sed
     ;;
diff --git a/sysdeps/unix/sysv/linux/configure.in b/sysdeps/unix/sysv/linux/configure.in
index b112a0f4fb..b522f3e08b 100644
--- a/sysdeps/unix/sysv/linux/configure.in
+++ b/sysdeps/unix/sysv/linux/configure.in
@@ -157,6 +157,12 @@ case "$machine" in
   i[3456]86* | m68*)
     ldd_rewrite_script=../sysdeps/unix/sysv/linux/ldd-rewrite.sed
     ;;
+  ia64*)
+    ldd_rewrite_script=../sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed
+    ;;
+  s390*)
+    ldd_rewrite_script=../sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed
+    ;;
   sparc*)
     ldd_rewrite_script=../sysdeps/unix/sysv/linux/sparc/ldd-rewrite.sed
     ;;
diff --git a/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed b/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed
new file mode 100644
index 0000000000..aed1556382
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed
@@ -0,0 +1 @@
+s_^\(RTLDLIST=\)\([^ 	]*\)\(\|-ia64\)\(\.so\.[0-9.]*\)[ 	]*$_\1"\2-ia64\4 \2\4"_
diff --git a/sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed b/sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed
new file mode 100644
index 0000000000..28e46fe778
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed
@@ -0,0 +1 @@
+s_^\(RTLDLIST=\)\([^ 	]*\)\(\|64\)\(\.so\.[0-9.]*\)[ 	]*$_\1"\2\4 \264\4"_