]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Mon, 21 Jul 2003 20:17:47 +0000 (20:17 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 21 Jul 2003 20:17:47 +0000 (20:17 +0000)
2003-07-21  HJ Lu  <hongjiu.lu@intel.com>

* elf/ldconfig.c (search_dir): Treat symlink as regular file
if it won't point to itself.

ChangeLog
elf/ldconfig.c
nptl/ChangeLog
nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c

index 13ccee24163a3d2e0ba47d1a938a51d86527e59b..3d2fa219a9f7e53bc014f6a804dd4c56d1b3f62e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2003-07-21  HJ Lu  <hongjiu.lu@intel.com>
+
+       * elf/ldconfig.c (search_dir): Treat symlink as regular file
+       if it won't point to itself.
+
 2003-07-20  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/ia64/hp-timing.h (REPEAT_READ): Cast to long int not to int.
index bb9a3d4c835e16cb4ab95e8508a366ff9a27c397..1acacb4225f3f7fa5548749527254cbb11078941 100644 (file)
@@ -787,11 +787,18 @@ search_dir (const struct dir_entry *entry)
       if (real_name != real_file_name)
        free (real_name);
 
-      /* Links will just point to itself.  */
+      /* A link may just point to itself.  */
       if (is_link)
        {
-         free (soname);
-         soname = xstrdup (direntry->d_name);
+         /* If the path the link points to isn't its soname, we treat
+            it as a normal file.  */
+         if (strcmp (basename (real_name), soname) != 0)
+           is_link = 0;
+         else
+           {
+             free (soname);
+             soname = xstrdup (direntry->d_name);
+           }
        }
 
       if (flag == FLAG_ELF
index c2e50552d8d48d10371af9e11d795a79f46de975..43ce661be41eed50fe133fa7c30746ee06956df9 100644 (file)
@@ -1,3 +1,8 @@
+2003-07-21  Steven Munroe  <sjmunroe@us.ibm.com>
+
+       * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (__pthread_once):
+       Retry if the stwcx fails to store once_control.
+
 2003-07-20  Ulrich Drepper  <drepper@redhat.com>
 
        * Makefile (libpthread-routines): Add pthread_attr_getaffinity and
index 88acb26e03330e01fa74bdd67df1b9d589fd9e35..ea46cc90231f9a06f08757ca6c5d1c0bfae27a05 100644 (file)
@@ -55,6 +55,7 @@ __pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
                        "       andi.   %1,%0,2\n"
                        "       bne     2f\n"
                        "       stwcx.  %4,0,%3\n"
+                       "       bne     1b\n"
                        "2:     isync"
                        : "=&r" (oldval), "=&r" (tmp), "=m" (*once_control)
                        : "r" (once_control), "r" (newval), "m" (*once_control)