summaryrefslogtreecommitdiff
path: root/sysdeps/unix
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2017-08-03 14:29:06 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2017-08-31 16:10:34 -0300
commit102dde842ae75ddee71a413fc8c4320894e159de (patch)
treed0e8c0cf9f0ab384ba250672fabfec096e0a6cca /sysdeps/unix
parent9eee633b68649c94b2404f65d5c9a00c3ed1f068 (diff)
downloadglibc-102dde842ae75ddee71a413fc8c4320894e159de.tar.gz
Remove NO_CANCELLATION macro
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.
Diffstat (limited to 'sysdeps/unix')
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/arm/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/fcntl.c24
-rw-r--r--sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/mips/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/nios2/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/not-cancel.h3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/sh/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/tile/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h1
19 files changed, 16 insertions, 28 deletions
diff --git a/sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h b/sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h
index 80732f5445..27741a3f02 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 72e6c0cb60..561cb67f1c 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 8930245ff3..b227187ab9 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 76e846c6ac..cda6be712d 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 bf88ea56be..8a85fc2144 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 7ad851ade6..5c11983bb5 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 d3d02d4ca3..fe5b35ad88 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 cf96c10d1f..b192a6875a 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 8655c9dc97..120ea06ba3 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 76d7ef43cf..31dbba0470 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 73b623614d..4e7f5363a1 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 ae0b059e75..8f4f3380b9 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 532df316d5..59f752f950 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 459b742f7a..bd606d5f8e 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 99adad19a0..2283b861cd 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 3f880bdf3b..b2deb1191b 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 412b31af10..7fe0deee63 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 277709f848..a606b0ceaa 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 c1c07199ff..34f14c6bc9 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