summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--elf/ldconfig.c13
-rw-r--r--nptl/ChangeLog5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c1
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)