diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | elf/ldconfig.c | 13 | ||||
-rw-r--r-- | nptl/ChangeLog | 5 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c | 1 |
4 files changed, 21 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 13ccee2416..3d2fa219a9 100644 --- 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. diff --git a/elf/ldconfig.c b/elf/ldconfig.c index bb9a3d4c83..1acacb4225 100644 --- a/elf/ldconfig.c +++ b/elf/ldconfig.c @@ -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 diff --git a/nptl/ChangeLog b/nptl/ChangeLog index c2e50552d8..43ce661be4 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -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 diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c index 88acb26e03..ea46cc9023 100644 --- a/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c +++ b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c @@ -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) |