Move semaphore.h to sysdeps/pthread/.
authorJoseph Myers <joseph@codesourcery.com>
Thu, 11 Dec 2014 22:58:48 +0000 (22:58 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Thu, 11 Dec 2014 22:58:48 +0000 (22:58 +0000)
Carlos reported failures in conform/ tests in environments where the
compiler used could only find headers in glibc's source and build
trees, not any previously installed headers
<https://sourceware.org/ml/libc-alpha/2014-09/msg00040.html>.

This patch moves nptl/semaphore.h to sysdeps/pthread/semaphore.h so
that it can be found by builds from all glibc subdirectories; it's not
in any way NPTL-specific.  (I left the Makefile setting to install
this header in nptl/, but maybe it should move as well - it's just not
clear to me what ifeq ($(subdir),...) conditional should be used to
select the directory to associate the header with for installation
purposes.  The path in the toplevel Makefile used for begin-end-check
also remains hardcoded; it's a known todo issue to rework that test to
run in each subdirectory checking the headers installed from that
subdirectory, rather than a separate hardcoded list.)

Tested for x86_64 (testsuite, and that installed stripped shared
libraries are unchanged by the patch).  I did *not* test a
configuration such as that in which Carlos saw failure.

* nptl/semaphore.h: Move to ...
* sysdeps/pthread/semaphore.h: ... here.
* Makefile (installed-headers): Change nptl/semaphore.h to
sysdeps/pthread/semaphore.h.

ChangeLog
Makefile
nptl/semaphore.h [deleted file]
sysdeps/pthread/semaphore.h [new file with mode: 0644]

index 35d61bd3cbcc68d22978122f07e086fee3b3c431..7630e80a164fb5f9849370cd6fe4ad6524e434da 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-12-11  Joseph Myers  <joseph@codesourcery.com>
+
+       * nptl/semaphore.h: Move to ...
+       * sysdeps/pthread/semaphore.h: ... here.
+       * Makefile (installed-headers): Change nptl/semaphore.h to
+       sysdeps/pthread/semaphore.h.
+
 2014-12-11  Roland McGrath  <roland@hack.frob.com>
 
        * misc/tst-error1.c (do_test): Ignore -Wformat-security for
index 51ff5ca28e11dfb7197b241140c4a86c8f908611..b012cede8ecda693049450003979b3f5c3c744c1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -284,7 +284,7 @@ installed-headers = argp/argp.h assert/assert.h catgets/nl_types.h \
                    malloc/obstack.h malloc/mcheck.h math/math.h \
                    math/complex.h math/fenv.h math/tgmath.h misc/sys/uio.h \
                    $(wildcard nis/rpcsvc/*.h) nptl_db/thread_db.h \
-                   sysdeps/nptl/pthread.h nptl/semaphore.h \
+                   sysdeps/nptl/pthread.h sysdeps/pthread/semaphore.h \
                    nss/nss.h posix/sys/utsname.h posix/sys/times.h \
                    posix/sys/wait.h posix/sys/types.h posix/unistd.h \
                    posix/glob.h posix/regex.h posix/wordexp.h posix/fnmatch.h\
diff --git a/nptl/semaphore.h b/nptl/semaphore.h
deleted file mode 100644 (file)
index 763db34..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Copyright (C) 2002-2014 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _SEMAPHORE_H
-#define _SEMAPHORE_H   1
-
-#include <features.h>
-#include <sys/types.h>
-#ifdef __USE_XOPEN2K
-# define __need_timespec
-# include <time.h>
-#endif
-
-/* Get the definition for sem_t.  */
-#include <bits/semaphore.h>
-
-
-__BEGIN_DECLS
-
-/* Initialize semaphore object SEM to VALUE.  If PSHARED then share it
-   with other processes.  */
-extern int sem_init (sem_t *__sem, int __pshared, unsigned int __value)
-     __THROW;
-/* Free resources associated with semaphore object SEM.  */
-extern int sem_destroy (sem_t *__sem) __THROW;
-
-/* Open a named semaphore NAME with open flags OFLAG.  */
-extern sem_t *sem_open (const char *__name, int __oflag, ...) __THROW;
-
-/* Close descriptor for named semaphore SEM.  */
-extern int sem_close (sem_t *__sem) __THROW;
-
-/* Remove named semaphore NAME.  */
-extern int sem_unlink (const char *__name) __THROW;
-
-/* Wait for SEM being posted.
-
-   This function is a cancellation point and therefore not marked with
-   __THROW.  */
-extern int sem_wait (sem_t *__sem);
-
-#ifdef __USE_XOPEN2K
-/* Similar to `sem_wait' but wait only until ABSTIME.
-
-   This function is a cancellation point and therefore not marked with
-   __THROW.  */
-extern int sem_timedwait (sem_t *__restrict __sem,
-                         const struct timespec *__restrict __abstime);
-#endif
-
-/* Test whether SEM is posted.  */
-extern int sem_trywait (sem_t *__sem) __THROWNL;
-
-/* Post SEM.  */
-extern int sem_post (sem_t *__sem) __THROWNL;
-
-/* Get current value of SEM and store it in *SVAL.  */
-extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval)
-     __THROW;
-
-
-__END_DECLS
-
-#endif /* semaphore.h */
diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
new file mode 100644 (file)
index 0000000..763db34
--- /dev/null
@@ -0,0 +1,78 @@
+/* Copyright (C) 2002-2014 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SEMAPHORE_H
+#define _SEMAPHORE_H   1
+
+#include <features.h>
+#include <sys/types.h>
+#ifdef __USE_XOPEN2K
+# define __need_timespec
+# include <time.h>
+#endif
+
+/* Get the definition for sem_t.  */
+#include <bits/semaphore.h>
+
+
+__BEGIN_DECLS
+
+/* Initialize semaphore object SEM to VALUE.  If PSHARED then share it
+   with other processes.  */
+extern int sem_init (sem_t *__sem, int __pshared, unsigned int __value)
+     __THROW;
+/* Free resources associated with semaphore object SEM.  */
+extern int sem_destroy (sem_t *__sem) __THROW;
+
+/* Open a named semaphore NAME with open flags OFLAG.  */
+extern sem_t *sem_open (const char *__name, int __oflag, ...) __THROW;
+
+/* Close descriptor for named semaphore SEM.  */
+extern int sem_close (sem_t *__sem) __THROW;
+
+/* Remove named semaphore NAME.  */
+extern int sem_unlink (const char *__name) __THROW;
+
+/* Wait for SEM being posted.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern int sem_wait (sem_t *__sem);
+
+#ifdef __USE_XOPEN2K
+/* Similar to `sem_wait' but wait only until ABSTIME.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern int sem_timedwait (sem_t *__restrict __sem,
+                         const struct timespec *__restrict __abstime);
+#endif
+
+/* Test whether SEM is posted.  */
+extern int sem_trywait (sem_t *__sem) __THROWNL;
+
+/* Post SEM.  */
+extern int sem_post (sem_t *__sem) __THROWNL;
+
+/* Get current value of SEM and store it in *SVAL.  */
+extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval)
+     __THROW;
+
+
+__END_DECLS
+
+#endif /* semaphore.h */