aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog13
-rw-r--r--posix/Makefile1
-rw-r--r--sysdeps/unix/sysv/linux/pause.c (renamed from sysdeps/unix/sysv/linux/generic/pause.c)18
-rw-r--r--sysdeps/unix/sysv/linux/sparc/kernel-features.h4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/Makefile1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/pause.c9
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list1
7 files changed, 24 insertions, 23 deletions
diff --git a/ChangeLog b/ChangeLog
index 5ebd3a0..135b5a5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2017-05-18 Adhemerval Zanella <adhemerval.zanella@linaro.org>
+
+ * sysdeps/unix/sysv/linux/generic/pause.c: Remove file.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/pause.c: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/kernel-features.h [__arch64__]
+ (__NR_pause): Undefine.
+ * sysdeps/unix/sysv/linux/pause.c: New file.
+ * sysdeps/unix/sysv/linux/syscalls.list: Remove pause from
+ auto-generation list.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile (CFLAGS-pause.c):
+ Remove rule.
+ * posix/Makefile (CFLAGS-pause.c): Remove redundant rule.
+
2017-05-18 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/x86_64/multiarch/memcmp.S (__GI_memcmp): Correct
diff --git a/posix/Makefile b/posix/Makefile
index 0025d8a..a78ca3d 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -221,7 +221,6 @@ CFLAGS-spawnp.c = -fexceptions
CFLAGS-spawnp.os = -fomit-frame-pointer
CFLAGS-spawni.c = -fexceptions
CFLAGS-spawni.os = -fomit-frame-pointer
-CFLAGS-pause.c = -fexceptions
CFLAGS-glob.c = $(uses-callbacks) -fexceptions
CFLAGS-glob64.c = $(uses-callbacks) -fexceptions
CFLAGS-getconf.c = -DGETCONF_DIR='"$(libexecdir)/getconf"'
diff --git a/sysdeps/unix/sysv/linux/generic/pause.c b/sysdeps/unix/sysv/linux/pause.c
index a8b3e33..4ccce9e 100644
--- a/sysdeps/unix/sysv/linux/generic/pause.c
+++ b/sysdeps/unix/sysv/linux/pause.c
@@ -1,6 +1,6 @@
-/* Copyright (C) 2011-2017 Free Software Foundation, Inc.
+/* Linux pause syscall implementation.
+ Copyright (C) 2017 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -26,14 +26,10 @@
int
__libc_pause (void)
{
- sigset_t set;
-
- int rc =
- SYSCALL_CANCEL (rt_sigprocmask, SIG_BLOCK, NULL, &set, _NSIG / 8);
- if (rc == 0)
- rc = SYSCALL_CANCEL (rt_sigsuspend, &set, _NSIG / 8);
-
- return rc;
+#ifdef __NR_pause
+ return SYSCALL_CANCEL (pause);
+#else
+ return SYSCALL_CANCEL (ppoll, NULL, 0, NULL, NULL);
+#endif
}
-
weak_alias (__libc_pause, pause)
diff --git a/sysdeps/unix/sysv/linux/sparc/kernel-features.h b/sysdeps/unix/sysv/linux/sparc/kernel-features.h
index 72065a0..3fafab3 100644
--- a/sysdeps/unix/sysv/linux/sparc/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/sparc/kernel-features.h
@@ -32,6 +32,10 @@
# undef __ASSUME_ACCEPT_SYSCALL
# undef __ASSUME_CONNECT_SYSCALL
# undef __ASSUME_RECVFROM_SYSCALL
+#else
+/* sparc64 defines __NR_pause, however it is not supported (ENOSYS).
+ Undefine so pause.c can use a correct alternative. */
+# undef __NR_pause
#endif
/* sparc only supports ipc syscall. */
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile b/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
index 7ea433f..3a7f4aa 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
@@ -9,6 +9,5 @@ sysdep_routines += __start_context
endif
ifeq ($(subdir),nptl)
-CFLAGS-pause.c += -fexceptions
CFLAGS-sigsuspend.c += -fexceptions
endif
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c b/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c
deleted file mode 100644
index e399e7c..0000000
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include <errno.h>
-#include <signal.h>
-#include <unistd.h>
-#include <sysdep-cancel.h>
-
-#define __sigprocmask(how, set, oset) \
- INLINE_SYSCALL (rt_sigprocmask, 4, how, set, oset, _NSIG / 8)
-
-#include <sysdeps/posix/pause.c>
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index f4abf3e..eab30dd 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -44,7 +44,6 @@ munlock - munlock i:ai munlock
munlockall - munlockall i: munlockall
nanosleep - nanosleep Ci:pp __nanosleep nanosleep
nfsservctl EXTRA nfsservctl i:ipp nfsservctl
-pause - pause Ci: __libc_pause pause
pipe - pipe i:f __pipe pipe
pipe2 - pipe2 i:fi __pipe2 pipe2
pivot_root EXTRA pivot_root i:ss pivot_root