[COMMITTED] Remove NO_CANCELLATION macro

Message ID 1504206900-13136-1-git-send-email-adhemerval.zanella@linaro.org
State New
Headers show
Series
  • [COMMITTED] Remove NO_CANCELLATION macro
Related show

Commit Message

Adhemerval Zanella Aug. 31, 2017, 7:15 p.m.
The NO_CANCELLATION macro is used currently on generic headers to
define non cancellable syscalls and on Linux fcntl to implement the non
cancellable variation.  Former should be single-handled by not-cancel.h
header and former could be simplified build both cancellable and non
cancellable for default objects and alias the non-cancellable to default
one for rtld ones (since Linux already support cancellation as default).

This patch thus removes the NO_CANCELLATION macro and its usage.  The
generic non cancellable fcntl is route to internal fcntl.

Checked on x86_64-linux-gnu and i686-linux-gnu.  Also checked with
a build again major ABIs.

	* sysdeps/generic/not-cancel.h (NO_CANCELLATION): Remove macro.
	* sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h (NO_CANCELLATION):
	Likewise.
	* sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (NO_CANCELLATION):
	Likewise.
	* sysdeps/unix/sysv/linux/arm/sysdep-cancel.h (NO_CANCELLATION):
	Likewise.
	* sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h (NO_CANCELLATION):
	Likewise.
	* sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (NO_CANCELLATION):
	Likewise.
	* sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (NO_CANCELLATION):
	Likewise.
	* sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h (NO_CANCELLATION):
	Likewise.
	* sysdeps/unix/sysv/linux/microblaze/sysdep-cancel.h
	(NO_CANCELLATION): Likewise.
	* sysdeps/unix/sysv/linux/mips/sysdep-cancel.h (NO_CANCELLATION):
	Likewise.
	* sysdeps/unix/sysv/linux/nios2/sysdep-cancel.h (NO_CANCELLATION):
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/sysdep-cancel.h (NO_CANCELLATION):
	Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
	(NO_CANCELLATION): Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
	(NO_CANCELLATION): Likewise.
	* sysdeps/unix/sysv/linux/sh/sysdep-cancel.h (NO_CANCELLATION):
	Likewise
	* sysdeps/unix/sysv/linux/sparc/sysdep-cancel.h (NO_CANCELLATION):
	Likewise.
	* sysdeps/unix/sysv/linux/tile/sysdep-cancel.h (NO_CANCELLATION):
	Likewise.
	* sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (NO_CANCELLATION):
	Likewise.
	* sysdeps/unix/sysv/linux/not-cancel.h (__fcntl_nocancel): Add
	hidden prototype.
	* sysdeps/unix/sysv/linux/fcntl.c (__fcntl_nocancel): Define only
	for !IS_IN (rtld) and remove NO_CANCELLATION usage.
---
 ChangeLog                                          | 42 ++++++++++++++++++++++
 sysdeps/generic/not-cancel.h                       |  2 --
 sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h    |  1 -
 sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h      |  1 -
 sysdeps/unix/sysv/linux/arm/sysdep-cancel.h        |  1 -
 sysdeps/unix/sysv/linux/fcntl.c                    | 24 +++++++------
 sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h       |  1 -
 sysdeps/unix/sysv/linux/i386/sysdep-cancel.h       |  1 -
 sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h       |  1 -
 sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h       |  1 -
 sysdeps/unix/sysv/linux/microblaze/sysdep-cancel.h |  1 -
 sysdeps/unix/sysv/linux/mips/sysdep-cancel.h       |  1 -
 sysdeps/unix/sysv/linux/nios2/sysdep-cancel.h      |  1 -
 sysdeps/unix/sysv/linux/not-cancel.h               |  3 +-
 sysdeps/unix/sysv/linux/powerpc/sysdep-cancel.h    |  1 -
 .../unix/sysv/linux/s390/s390-32/sysdep-cancel.h   |  1 -
 .../unix/sysv/linux/s390/s390-64/sysdep-cancel.h   |  1 -
 sysdeps/unix/sysv/linux/sh/sysdep-cancel.h         |  1 -
 sysdeps/unix/sysv/linux/sparc/sysdep-cancel.h      |  1 -
 sysdeps/unix/sysv/linux/tile/sysdep-cancel.h       |  1 -
 sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h     |  1 -
 21 files changed, 58 insertions(+), 30 deletions(-)

-- 
2.7.4

Patch

diff --git a/sysdeps/generic/not-cancel.h b/sysdeps/generic/not-cancel.h
index e5a850c..41ce1fc 100644
--- a/sysdeps/generic/not-cancel.h
+++ b/sysdeps/generic/not-cancel.h
@@ -44,5 +44,3 @@ 
   __nanosleep (requested_time, remaining)
 #define __fcntl_nocancel(fd, cmd, ...) \
   __fcntl (fd, cmd, __VA_ARGS__)
-
-#define NO_CANCELLATION 1
diff --git a/sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h b/sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h
index 80732f5..27741a3 100644
--- a/sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h
@@ -41,7 +41,6 @@  extern int __local_multiple_threads attribute_hidden;
 
 /* For rtld, et cetera.  */
 # define SINGLE_THREAD_P 1
-# define NO_CANCELLATION 1
 
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h b/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h
index 72e6c0c..561cb67 100644
--- a/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h
@@ -39,7 +39,6 @@  extern int __local_multiple_threads attribute_hidden;
 #else
 
 # define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION 1
 
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h b/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
index 8930245..b227187 100644
--- a/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
@@ -40,7 +40,6 @@  extern int __local_multiple_threads attribute_hidden;
 
 /* For rtld, et cetera.  */
 # define SINGLE_THREAD_P 1
-# define NO_CANCELLATION 1
 
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/fcntl.c b/sysdeps/unix/sysv/linux/fcntl.c
index 76e846c..cda6be7 100644
--- a/sysdeps/unix/sysv/linux/fcntl.c
+++ b/sysdeps/unix/sysv/linux/fcntl.c
@@ -19,6 +19,7 @@ 
 #include <stdarg.h>
 #include <errno.h>
 #include <sysdep-cancel.h>
+#include <not-cancel.h>
 
 #ifndef __NR_fcntl64
 # define __NR_fcntl64 __NR_fcntl
@@ -46,9 +47,8 @@  fcntl_common (int fd, int cmd, void *arg)
   return INLINE_SYSCALL_CALL (fcntl64, fd, cmd, (void *) arg);
 }
 
-#ifndef NO_CANCELLATION
 int
-__fcntl_nocancel (int fd, int cmd, ...)
+__libc_fcntl (int fd, int cmd, ...)
 {
   va_list ap;
   void *arg;
@@ -57,12 +57,18 @@  __fcntl_nocancel (int fd, int cmd, ...)
   arg = va_arg (ap, void *);
   va_end (ap);
 
+  cmd = FCNTL_ADJUST_CMD (cmd);
+
+  if (cmd == F_SETLKW || cmd == F_SETLKW64)
+    return SYSCALL_CANCEL (fcntl64, fd, cmd, (void *) arg);
+
   return fcntl_common (fd, cmd, arg);
 }
-#endif
+libc_hidden_def (__libc_fcntl)
 
+#if !IS_IN (rtld)
 int
-__libc_fcntl (int fd, int cmd, ...)
+__fcntl_nocancel (int fd, int cmd, ...)
 {
   va_list ap;
   void *arg;
@@ -71,14 +77,12 @@  __libc_fcntl (int fd, int cmd, ...)
   arg = va_arg (ap, void *);
   va_end (ap);
 
-  cmd = FCNTL_ADJUST_CMD (cmd);
-
-  if (cmd == F_SETLKW || cmd == F_SETLKW64)
-    return SYSCALL_CANCEL (fcntl64, fd, cmd, (void *) arg);
-
   return fcntl_common (fd, cmd, arg);
 }
-libc_hidden_def (__libc_fcntl)
+#else
+strong_alias (__libc_fcntl, __fcntl_nocancel)
+#endif
+libc_hidden_def (__fcntl_nocancel)
 
 weak_alias (__libc_fcntl, __fcntl)
 libc_hidden_weak (__fcntl)
diff --git a/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h b/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h
index bf88ea5..8a85fc2 100644
--- a/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h
@@ -38,7 +38,6 @@ 
 
 /* This code should never be used but we define it anyhow.  */
 # define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION 1
 
 #endif
 /* IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt) */
diff --git a/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h b/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
index 7ad851a..5c11983 100644
--- a/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
@@ -28,7 +28,6 @@ 
 #else
 
 # define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION 1
 
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h b/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h
index d3d02d4..fe5b35a 100644
--- a/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h
@@ -25,7 +25,6 @@ 
   __glibc_likely (THREAD_GETMEM (THREAD_SELF, header.multiple_threads) == 0)
 #else
 # define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION 1
 #endif
 
 #define RTLD_SINGLE_THREAD_P \
diff --git a/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h b/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h
index cf96c10..b192a68 100644
--- a/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h
@@ -27,7 +27,6 @@ 
 #else
 
 # define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION (1)
 
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/microblaze/sysdep-cancel.h b/sysdeps/unix/sysv/linux/microblaze/sysdep-cancel.h
index 8655c9d..120ea06 100644
--- a/sysdeps/unix/sysv/linux/microblaze/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/microblaze/sysdep-cancel.h
@@ -38,7 +38,6 @@  extern int __local_multiple_threads attribute_hidden;
 #else
 
 # define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION (1)
 
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h b/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h
index 76d7ef4..31dbba0 100644
--- a/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h
@@ -28,7 +28,6 @@ 
 #else
 
 # define SINGLE_THREAD_P 1
-# define NO_CANCELLATION 1
 
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/nios2/sysdep-cancel.h b/sysdeps/unix/sysv/linux/nios2/sysdep-cancel.h
index 73b6236..4e7f536 100644
--- a/sysdeps/unix/sysv/linux/nios2/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/nios2/sysdep-cancel.h
@@ -28,7 +28,6 @@ 
 #else
 
 # define SINGLE_THREAD_P 1
-# define NO_CANCELLATION 1
 
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/not-cancel.h b/sysdeps/unix/sysv/linux/not-cancel.h
index ae0b059..8f4f338 100644
--- a/sysdeps/unix/sysv/linux/not-cancel.h
+++ b/sysdeps/unix/sysv/linux/not-cancel.h
@@ -86,6 +86,7 @@  __typeof (__nanosleep) __nanosleep_nocancel;
 hidden_proto (__nanosleep_nocancel)
 
 /* Uncancelable fcntl.  */
-__typeof (__fcntl) __fcntl_nocancel attribute_hidden;
+__typeof (__fcntl) __fcntl_nocancel;
+libc_hidden_proto (__fcntl_nocancel)
 
 #endif /* NOT_CANCEL_H  */
diff --git a/sysdeps/unix/sysv/linux/powerpc/sysdep-cancel.h b/sysdeps/unix/sysv/linux/powerpc/sysdep-cancel.h
index 532df31..59f752f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sysdep-cancel.h
@@ -28,7 +28,6 @@ 
 #else
 
 # define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION 1
 
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
index 459b742..bd606d5 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
@@ -28,7 +28,6 @@ 
 #else
 
 # define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION 1
 
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
index 99adad1..2283b86 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
@@ -43,7 +43,6 @@  extern int __local_multiple_threads attribute_hidden;
 #else
 
 # define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION 1
 
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h b/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
index 3f880bd..b2deb11 100644
--- a/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
@@ -27,7 +27,6 @@ 
 #else
 
 # define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION 1
 
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/sparc/sysdep-cancel.h b/sysdeps/unix/sysv/linux/sparc/sysdep-cancel.h
index 412b31a..7fe0dee 100644
--- a/sysdeps/unix/sysv/linux/sparc/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/sparc/sysdep-cancel.h
@@ -28,7 +28,6 @@ 
 #else
 
 # define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION 1
 
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/tile/sysdep-cancel.h b/sysdeps/unix/sysv/linux/tile/sysdep-cancel.h
index 277709f..a606b0c 100644
--- a/sysdeps/unix/sysv/linux/tile/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/tile/sysdep-cancel.h
@@ -28,7 +28,6 @@ 
 #else
 
 # define SINGLE_THREAD_P 1
-# define NO_CANCELLATION 1
 
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h b/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
index c1c0719..34f14c6 100644
--- a/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
@@ -43,7 +43,6 @@  extern int __local_multiple_threads attribute_hidden;
 #else
 
 # define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION 1
 
 #endif