about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog20
-rw-r--r--NEWS2
-rw-r--r--conform/Makefile2
-rw-r--r--include/search.h4
-rw-r--r--misc/Versions1
-rw-r--r--misc/tsearch.c4
-rw-r--r--nptl/sem_close.c4
-rw-r--r--nptl/sem_open.c5
-rw-r--r--sysdeps/sparc/sparc32/sem_open.c5
9 files changed, 38 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index abc52cc07b..d055ea3590 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,25 @@
 2015-06-17  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #18536]
+	* misc/tsearch.c (__tsearch): Use libc_hidden_def.
+	(__tfind): Likewise.
+	(__tdelete): Likewise.
+	(__twalk): Likewise.
+	* misc/Versions (libc): Add __tdelete, __tfind, __tsearch and
+	__twalk to GLIBC_PRIVATE.
+	* include/search.h (__tsearch): Use libc_hidden_proto.
+	(__tfind): Likewise.
+	(__tdelete): Likewise.
+	(__twalk): Likewise.
+	* nptl/sem_close.c (sem_close): Call __twalk instead of twalk.
+	Call __tdelete instead of tdelete.
+	* nptl/sem_open.c (check_add_mapping): Call __tfind instead of
+	tfind.  Call __tsearch instead of tsearch.
+	* sysdeps/sparc/sparc32/sem_open.c (check_add_mapping): Likewise.
+	* conform/Makefile (test-xfail-POSIX/semaphore.h/linknamespace):
+	Remove variable.
+	(test-xfail-POSIX2008/semaphore.h/linknamespace): Likewise.
+
 	[BZ #18534]
 	* stdio-common/dprintf.c (__dprintf): Use libc_hidden_def.
 	(dprintf): Define as a weak alias of __dprintf, not a strong
diff --git a/NEWS b/NEWS
index a0ebe58989..0b67fa2c0f 100644
--- a/NEWS
+++ b/NEWS
@@ -22,7 +22,7 @@ Version 2.22
   18324, 18333, 18346, 18397, 18409, 18410, 18412, 18418, 18422, 18434,
   18444, 18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497, 18498,
   18507, 18512, 18519, 18520, 18522, 18527, 18528, 18529, 18530, 18532,
-  18533, 18534.
+  18533, 18534, 18536.
 
 * Cache information can be queried via sysconf() function on s390 e.g. with
   _SC_LEVEL1_ICACHE_SIZE as argument.
diff --git a/conform/Makefile b/conform/Makefile
index 9347b0f6a8..873326b7c6 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -348,11 +348,9 @@ test-xfail-XPG3/unistd.h/linknamespace = yes
 test-xfail-XPG4/fmtmsg.h/linknamespace = yes
 test-xfail-XPG4/unistd.h/linknamespace = yes
 test-xfail-POSIX/mqueue.h/linknamespace = yes
-test-xfail-POSIX/semaphore.h/linknamespace = yes
 test-xfail-UNIX98/fmtmsg.h/linknamespace = yes
 test-xfail-UNIX98/mqueue.h/linknamespace = yes
 test-xfail-UNIX98/unistd.h/linknamespace = yes
 test-xfail-UNIX98/wchar.h/linknamespace = yes
 test-xfail-XOPEN2K/fmtmsg.h/linknamespace = yes
-test-xfail-POSIX2008/semaphore.h/linknamespace = yes
 test-xfail-XOPEN2K8/fmtmsg.h/linknamespace = yes
diff --git a/include/search.h b/include/search.h
index 24eafc0f71..a941959dbe 100644
--- a/include/search.h
+++ b/include/search.h
@@ -14,11 +14,15 @@ libc_hidden_proto (lfind)
 extern void __hdestroy (void);
 extern void *__tsearch (const void *__key, void **__rootp,
 			__compar_fn_t compar);
+libc_hidden_proto (__tsearch)
 extern void *__tfind (const void *__key, void *const *__rootp,
 		      __compar_fn_t compar);
+libc_hidden_proto (__tfind)
 extern void *__tdelete (const void *__key, void **__rootp,
 			__compar_fn_t compar);
+libc_hidden_proto (__tdelete)
 extern void __twalk (const void *__root, __action_fn_t action);
+libc_hidden_proto (__twalk)
 extern void __tdestroy (void *__root, __free_fn_t freefct);
 #endif
 #endif
diff --git a/misc/Versions b/misc/Versions
index ec5aea7b52..534d1a3fca 100644
--- a/misc/Versions
+++ b/misc/Versions
@@ -153,5 +153,6 @@ libc {
     __madvise;
     __mktemp;
     __libc_ifunc_impl_list;
+    __tdelete; __tfind; __tsearch; __twalk;
   }
 }
diff --git a/misc/tsearch.c b/misc/tsearch.c
index d4052e8397..869dc9bec7 100644
--- a/misc/tsearch.c
+++ b/misc/tsearch.c
@@ -293,6 +293,7 @@ __tsearch (const void *key, void **vrootp, __compar_fn_t compar)
 
   return q;
 }
+libc_hidden_def (__tsearch)
 weak_alias (__tsearch, tsearch)
 
 
@@ -325,6 +326,7 @@ __tfind (key, vrootp, compar)
     }
   return NULL;
 }
+libc_hidden_def (__tfind)
 weak_alias (__tfind, tfind)
 
 
@@ -585,6 +587,7 @@ __tdelete (const void *key, void **vrootp, __compar_fn_t compar)
   free (unchained);
   return retval;
 }
+libc_hidden_def (__tdelete)
 weak_alias (__tdelete, tdelete)
 
 
@@ -625,6 +628,7 @@ __twalk (const void *vroot, __action_fn_t action)
   if (root != NULL && action != NULL)
     trecurse (root, action, 0);
 }
+libc_hidden_def (__twalk)
 weak_alias (__twalk, twalk)
 
 
diff --git a/nptl/sem_close.c b/nptl/sem_close.c
index 3f1ccbe240..7f1df14fc3 100644
--- a/nptl/sem_close.c
+++ b/nptl/sem_close.c
@@ -51,7 +51,7 @@ sem_close (sem)
   /* Locate the entry for the mapping the caller provided.  */
   rec = NULL;
   the_sem = sem;
-  twalk (__sem_mappings, walker);
+  __twalk (__sem_mappings, walker);
   if  (rec != NULL)
     {
       /* Check the reference counter.  If it is going to be zero, free
@@ -59,7 +59,7 @@ sem_close (sem)
       if (--rec->refcnt == 0)
 	{
 	  /* Remove the record from the tree.  */
-	  (void) tdelete (rec, &__sem_mappings, __sem_search);
+	  (void) __tdelete (rec, &__sem_mappings, __sem_search);
 
 	  result = munmap (rec->sem, sizeof (sem_t));
 
diff --git a/nptl/sem_open.c b/nptl/sem_open.c
index bfd2dea94e..ecd051a547 100644
--- a/nptl/sem_open.c
+++ b/nptl/sem_open.c
@@ -79,7 +79,8 @@ check_add_mapping (const char *name, size_t namelen, int fd, sem_t *existing)
       fake->dev = st.st_dev;
       fake->ino = st.st_ino;
 
-      struct inuse_sem **foundp = tfind (fake, &__sem_mappings, __sem_search);
+      struct inuse_sem **foundp = __tfind (fake, &__sem_mappings,
+					   __sem_search);
       if (foundp != NULL)
 	{
 	  /* There is already a mapping.  Use it.  */
@@ -108,7 +109,7 @@ check_add_mapping (const char *name, size_t namelen, int fd, sem_t *existing)
 
 	      /* Insert the new value.  */
 	      if (existing != MAP_FAILED
-		  && tsearch (newp, &__sem_mappings, __sem_search) != NULL)
+		  && __tsearch (newp, &__sem_mappings, __sem_search) != NULL)
 		/* Successful.  */
 		result = existing;
 	      else
diff --git a/sysdeps/sparc/sparc32/sem_open.c b/sysdeps/sparc/sparc32/sem_open.c
index af9233c653..2698d195ba 100644
--- a/sysdeps/sparc/sparc32/sem_open.c
+++ b/sysdeps/sparc/sparc32/sem_open.c
@@ -79,7 +79,8 @@ check_add_mapping (const char *name, size_t namelen, int fd, sem_t *existing)
       fake->dev = st.st_dev;
       fake->ino = st.st_ino;
 
-      struct inuse_sem **foundp = tfind (fake, &__sem_mappings, __sem_search);
+      struct inuse_sem **foundp = __tfind (fake, &__sem_mappings,
+					   __sem_search);
       if (foundp != NULL)
 	{
 	  /* There is already a mapping.  Use it.  */
@@ -108,7 +109,7 @@ check_add_mapping (const char *name, size_t namelen, int fd, sem_t *existing)
 
 	      /* Insert the new value.  */
 	      if (existing != MAP_FAILED
-		  && tsearch (newp, &__sem_mappings, __sem_search) != NULL)
+		  && __tsearch (newp, &__sem_mappings, __sem_search) != NULL)
 		/* Successful.  */
 		result = existing;
 	      else