This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.19-441-ga60339a
- From: willnewton at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 20 May 2014 12:48:55 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.19-441-ga60339a
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via a60339aaff82beadea6f580e587d64052cb5e3b8 (commit)
via 7d05a8168b45c0580e1f9a79c2dd26c8f0d31fca (commit)
from af121e371d6d1a46df72d59f3a6b521eb12a9c6e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=a60339aaff82beadea6f580e587d64052cb5e3b8
commit a60339aaff82beadea6f580e587d64052cb5e3b8
Author: Will Newton <will.newton@linaro.org>
Date: Mon May 19 14:38:30 2014 +0100
AArch64: Fix handling of nocancel syscall failures
The current code for nocancel syscalls does not do a comparison of
the system call return value. This leads to code being generated
where the b.cs follows the svc instruction directly without setting
the flags on which the branch depends.
ChangeLog:
2014-05-20 Will Newton <will.newton@linaro.org>
* sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h (PSEUDO):
Test the return value of the system call in the nocancel case.
diff --git a/ChangeLog b/ChangeLog
index 8c2fd97..fc75ff2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
2014-05-20 Will Newton <will.newton@linaro.org>
+
+ * sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h (PSEUDO):
+ Test the return value of the system call in the nocancel case.
+
+2014-05-20 Will Newton <will.newton@linaro.org>
Yvan Roux <yvan.roux@linaro.org>
* sysdeps/unix/sysv/linux/aarch64/sys/user.h: Remove unused
diff --git a/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h b/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
index f6903b5..0e9bef3 100644
--- a/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
@@ -32,6 +32,7 @@
__##syscall_name##_nocancel: \
cfi_startproc; \
DO_CALL (syscall_name, args); \
+ cmn x0, 4095; \
PSEUDO_RET; \
cfi_endproc; \
.size __##syscall_name##_nocancel,.-__##syscall_name##_nocancel; \
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=7d05a8168b45c0580e1f9a79c2dd26c8f0d31fca
commit 7d05a8168b45c0580e1f9a79c2dd26c8f0d31fca
Author: Yvan Roux <yvan.roux@linaro.org>
Date: Tue May 20 13:45:22 2014 +0100
AArch64: Remove asm/ptrace.h inclusion in sys/user.h and sys/procfs.h
This patch fixes an issue observed by the Xen project, where including
signal.h exposes various PSR_MODE #defines. This is due to the usage
in sys/user.h and sys/procfs.h of the struct user_pt_regs and
user_fpsimd_state included via asm/ptrace.h. The namespace pollution
this inclusion introduce is already partially fixed with some #undef
of the PTRACE_* symbols, but other symbols like the PSR_MODE ones are
still present, and undefining them is not safe since a user can
include ptrace.h before user.h.
My proposition is to define the 2 structures we need in user.h and get
rid of the asm/ptrace.h inclusion.
Build and make check are clean on AArch64.
2014-05-20 Will Newton <will.newton@linaro.org>
Yvan Roux <yvan.roux@linaro.org>
* sysdeps/unix/sysv/linux/aarch64/sys/user.h: Remove unused
#include of asm/ptrace.h.
(PTRACE_GET_THREAD_AREA): Remove #undef.
(PTRACE_GETHBPREGS): Likewise.
(PTRACE_SETHBPREGS): Likewise.
(struct user_regs_struct): New structure.
(struct user_fpsimd_struct): New structure.
* sysdeps/unix/sysv/linux/aarch64/sys/procfs.h: Remove unused
#include of asm/ptrace.h and second #include of sys/user.h.
(PTRACE_GET_THREAD_AREA): Remove #undef.
(PTRACE_GETHBPREGS): Likewise.
(PTRACE_SETHBPREGS): Likewise.
(ELF_NGREG): Use new struct user_regs_struct.
(elf_fpregset_t): Use new struct user_fpsimd_struct.
diff --git a/ChangeLog b/ChangeLog
index 2060344..8c2fd97 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2014-05-20 Will Newton <will.newton@linaro.org>
+ Yvan Roux <yvan.roux@linaro.org>
+
+ * sysdeps/unix/sysv/linux/aarch64/sys/user.h: Remove unused
+ #include of asm/ptrace.h.
+ (PTRACE_GET_THREAD_AREA): Remove #undef.
+ (PTRACE_GETHBPREGS): Likewise.
+ (PTRACE_SETHBPREGS): Likewise.
+ (struct user_regs_struct): New structure.
+ (struct user_fpsimd_struct): New structure.
+ * sysdeps/unix/sysv/linux/aarch64/sys/procfs.h: Remove unused
+ #include of asm/ptrace.h and second #include of sys/user.h.
+ (PTRACE_GET_THREAD_AREA): Remove #undef.
+ (PTRACE_GETHBPREGS): Likewise.
+ (PTRACE_SETHBPREGS): Likewise.
+ (ELF_NGREG): Use new struct user_regs_struct.
+ (elf_fpregset_t): Use new struct user_fpsimd_struct.
+
2014-05-19 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypof.c: Moved ...
diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/procfs.h b/sysdeps/unix/sysv/linux/aarch64/sys/procfs.h
index b02af8a..211227c 100644
--- a/sysdeps/unix/sysv/linux/aarch64/sys/procfs.h
+++ b/sysdeps/unix/sysv/linux/aarch64/sys/procfs.h
@@ -33,17 +33,6 @@
#include <sys/types.h>
#include <sys/user.h>
-/* We need to see the definition of struct pt_regs but do not want the
- linux PTRACE_* defines since they conflict with the generic eglibc
- definitions in sys/ptrace.h Hence the undef's below. */
-#include <asm/ptrace.h>
-
-#undef PTRACE_GET_THREAD_AREA
-#undef PTRACE_GETHBPREGS
-#undef PTRACE_SETHBPREGS
-
-#include <sys/user.h>
-
__BEGIN_DECLS
/* Type for a general-purpose register. */
@@ -53,11 +42,11 @@ typedef unsigned long elf_greg_t;
pt_regs' directly in the typedef, but tradition says that
the register set is an array, which does have some peculiar
semantics, so leave it that way. */
-#define ELF_NGREG (sizeof (struct user_pt_regs) / sizeof(elf_greg_t))
+#define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t))
typedef elf_greg_t elf_gregset_t[ELF_NGREG];
/* Register set for the floating-point registers. */
-typedef struct user_fpsimd_state elf_fpregset_t;
+typedef struct user_fpsimd_struct elf_fpregset_t;
/* Signal info. */
struct elf_siginfo
diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/user.h b/sysdeps/unix/sysv/linux/aarch64/sys/user.h
index eceeb38..0ca2715 100644
--- a/sysdeps/unix/sysv/linux/aarch64/sys/user.h
+++ b/sysdeps/unix/sysv/linux/aarch64/sys/user.h
@@ -19,13 +19,19 @@
#ifndef _SYS_USER_H
#define _SYS_USER_H 1
-/* We need to see the definition of struct pt_regs but do not want the
- linux PTRACE_* defines since they conflict with the generic glibc
- definitions in sys/ptrace.h Hence the undef's below. */
-#include <asm/ptrace.h>
-
-#undef PTRACE_GET_THREAD_AREA
-#undef PTRACE_GETHBPREGS
-#undef PTRACE_SETHBPREGS
+struct user_regs_struct
+{
+ unsigned long long regs[31];
+ unsigned long long sp;
+ unsigned long long pc;
+ unsigned long long pstate;
+};
+
+struct user_fpsimd_struct
+{
+ __uint128_t vregs[32];
+ unsigned int fpsr;
+ unsigned int fpcr;
+};
#endif
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 23 ++++++++++++++++++++
.../unix/sysv/linux/aarch64/nptl/sysdep-cancel.h | 1 +
sysdeps/unix/sysv/linux/aarch64/sys/procfs.h | 15 +-----------
sysdeps/unix/sysv/linux/aarch64/sys/user.h | 22 ++++++++++++-------
4 files changed, 40 insertions(+), 21 deletions(-)
hooks/post-receive
--
GNU C Library master sources