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.
This commit is contained in:
Adhemerval Zanella 2017-08-03 14:29:06 -03:00
parent 9eee633b68
commit 102dde842a
21 changed files with 63 additions and 35 deletions

View File

@ -1,3 +1,45 @@
2017-08-31 Adhemerval Zanella <adhemerval.zanella@linaro.org>
* 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.
2017-08-31 Steve Ellcey <sellcey@cavium.com> 2017-08-31 Steve Ellcey <sellcey@cavium.com>
* sysdeps/aarch64/dl-irel.h: (elf_ifunc_invoke): Change argument type * sysdeps/aarch64/dl-irel.h: (elf_ifunc_invoke): Change argument type

View File

@ -44,5 +44,3 @@
__nanosleep (requested_time, remaining) __nanosleep (requested_time, remaining)
#define __fcntl_nocancel(fd, cmd, ...) \ #define __fcntl_nocancel(fd, cmd, ...) \
__fcntl (fd, cmd, __VA_ARGS__) __fcntl (fd, cmd, __VA_ARGS__)
#define NO_CANCELLATION 1

View File

@ -41,7 +41,6 @@ extern int __local_multiple_threads attribute_hidden;
/* For rtld, et cetera. */ /* For rtld, et cetera. */
# define SINGLE_THREAD_P 1 # define SINGLE_THREAD_P 1
# define NO_CANCELLATION 1
#endif #endif

View File

@ -39,7 +39,6 @@ extern int __local_multiple_threads attribute_hidden;
#else #else
# define SINGLE_THREAD_P (1) # define SINGLE_THREAD_P (1)
# define NO_CANCELLATION 1
#endif #endif

View File

@ -40,7 +40,6 @@ extern int __local_multiple_threads attribute_hidden;
/* For rtld, et cetera. */ /* For rtld, et cetera. */
# define SINGLE_THREAD_P 1 # define SINGLE_THREAD_P 1
# define NO_CANCELLATION 1
#endif #endif

View File

@ -19,6 +19,7 @@
#include <stdarg.h> #include <stdarg.h>
#include <errno.h> #include <errno.h>
#include <sysdep-cancel.h> #include <sysdep-cancel.h>
#include <not-cancel.h>
#ifndef __NR_fcntl64 #ifndef __NR_fcntl64
# define __NR_fcntl64 __NR_fcntl # define __NR_fcntl64 __NR_fcntl
@ -46,21 +47,6 @@ fcntl_common (int fd, int cmd, void *arg)
return INLINE_SYSCALL_CALL (fcntl64, fd, cmd, (void *) arg); return INLINE_SYSCALL_CALL (fcntl64, fd, cmd, (void *) arg);
} }
#ifndef NO_CANCELLATION
int
__fcntl_nocancel (int fd, int cmd, ...)
{
va_list ap;
void *arg;
va_start (ap, cmd);
arg = va_arg (ap, void *);
va_end (ap);
return fcntl_common (fd, cmd, arg);
}
#endif
int int
__libc_fcntl (int fd, int cmd, ...) __libc_fcntl (int fd, int cmd, ...)
{ {
@ -80,6 +66,24 @@ __libc_fcntl (int fd, int cmd, ...)
} }
libc_hidden_def (__libc_fcntl) libc_hidden_def (__libc_fcntl)
#if !IS_IN (rtld)
int
__fcntl_nocancel (int fd, int cmd, ...)
{
va_list ap;
void *arg;
va_start (ap, cmd);
arg = va_arg (ap, void *);
va_end (ap);
return fcntl_common (fd, cmd, arg);
}
#else
strong_alias (__libc_fcntl, __fcntl_nocancel)
#endif
libc_hidden_def (__fcntl_nocancel)
weak_alias (__libc_fcntl, __fcntl) weak_alias (__libc_fcntl, __fcntl)
libc_hidden_weak (__fcntl) libc_hidden_weak (__fcntl)
weak_alias (__libc_fcntl, fcntl) weak_alias (__libc_fcntl, fcntl)

View File

@ -38,7 +38,6 @@
/* This code should never be used but we define it anyhow. */ /* This code should never be used but we define it anyhow. */
# define SINGLE_THREAD_P (1) # define SINGLE_THREAD_P (1)
# define NO_CANCELLATION 1
#endif #endif
/* IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt) */ /* IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt) */

View File

@ -28,7 +28,6 @@
#else #else
# define SINGLE_THREAD_P (1) # define SINGLE_THREAD_P (1)
# define NO_CANCELLATION 1
#endif #endif

View File

@ -25,7 +25,6 @@
__glibc_likely (THREAD_GETMEM (THREAD_SELF, header.multiple_threads) == 0) __glibc_likely (THREAD_GETMEM (THREAD_SELF, header.multiple_threads) == 0)
#else #else
# define SINGLE_THREAD_P (1) # define SINGLE_THREAD_P (1)
# define NO_CANCELLATION 1
#endif #endif
#define RTLD_SINGLE_THREAD_P \ #define RTLD_SINGLE_THREAD_P \

View File

@ -27,7 +27,6 @@
#else #else
# define SINGLE_THREAD_P (1) # define SINGLE_THREAD_P (1)
# define NO_CANCELLATION (1)
#endif #endif

View File

@ -38,7 +38,6 @@ extern int __local_multiple_threads attribute_hidden;
#else #else
# define SINGLE_THREAD_P (1) # define SINGLE_THREAD_P (1)
# define NO_CANCELLATION (1)
#endif #endif

View File

@ -28,7 +28,6 @@
#else #else
# define SINGLE_THREAD_P 1 # define SINGLE_THREAD_P 1
# define NO_CANCELLATION 1
#endif #endif

View File

@ -28,7 +28,6 @@
#else #else
# define SINGLE_THREAD_P 1 # define SINGLE_THREAD_P 1
# define NO_CANCELLATION 1
#endif #endif

View File

@ -86,6 +86,7 @@ __typeof (__nanosleep) __nanosleep_nocancel;
hidden_proto (__nanosleep_nocancel) hidden_proto (__nanosleep_nocancel)
/* Uncancelable fcntl. */ /* Uncancelable fcntl. */
__typeof (__fcntl) __fcntl_nocancel attribute_hidden; __typeof (__fcntl) __fcntl_nocancel;
libc_hidden_proto (__fcntl_nocancel)
#endif /* NOT_CANCEL_H */ #endif /* NOT_CANCEL_H */

View File

@ -28,7 +28,6 @@
#else #else
# define SINGLE_THREAD_P (1) # define SINGLE_THREAD_P (1)
# define NO_CANCELLATION 1
#endif #endif

View File

@ -28,7 +28,6 @@
#else #else
# define SINGLE_THREAD_P (1) # define SINGLE_THREAD_P (1)
# define NO_CANCELLATION 1
#endif #endif

View File

@ -43,7 +43,6 @@ extern int __local_multiple_threads attribute_hidden;
#else #else
# define SINGLE_THREAD_P (1) # define SINGLE_THREAD_P (1)
# define NO_CANCELLATION 1
#endif #endif

View File

@ -27,7 +27,6 @@
#else #else
# define SINGLE_THREAD_P (1) # define SINGLE_THREAD_P (1)
# define NO_CANCELLATION 1
#endif #endif

View File

@ -28,7 +28,6 @@
#else #else
# define SINGLE_THREAD_P (1) # define SINGLE_THREAD_P (1)
# define NO_CANCELLATION 1
#endif #endif

View File

@ -28,7 +28,6 @@
#else #else
# define SINGLE_THREAD_P 1 # define SINGLE_THREAD_P 1
# define NO_CANCELLATION 1
#endif #endif

View File

@ -43,7 +43,6 @@ extern int __local_multiple_threads attribute_hidden;
#else #else
# define SINGLE_THREAD_P (1) # define SINGLE_THREAD_P (1)
# define NO_CANCELLATION 1
#endif #endif