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.22-610-gd29d57e
- From: hjl at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 16 Dec 2015 13:22:44 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.22-610-gd29d57e
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 d29d57eed9a6acb646663a02b7eb2bece2c433dc (commit)
from 3da825ce483903e3a881a016113b3e59fd4041de (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=d29d57eed9a6acb646663a02b7eb2bece2c433dc
commit d29d57eed9a6acb646663a02b7eb2bece2c433dc
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Wed Dec 16 05:19:57 2015 -0800
Add REGISTERS_CLOBBERED_BY_SYSCALL for x86-64
X86-64 system calls use a different calling convention, which clobbers
CC, %r11 an %rcx registers. Define REGISTERS_CLOBBERED_BY_SYSCALL for
x86-64 inline asm statements.
* sysdeps/unix/sysv/linux/x86_64/sysdep.h
(REGISTERS_CLOBBERED_BY_SYSCALL): New.
(INTERNAL_SYSCALL_NCS): Use it.
(INTERNAL_SYSCALL_NCS_TYPES): Likewise.
diff --git a/ChangeLog b/ChangeLog
index 21e217a..17b04cd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2015-12-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/sysdep.h
+ (REGISTERS_CLOBBERED_BY_SYSCALL): New.
+ (INTERNAL_SYSCALL_NCS): Use it.
+ (INTERNAL_SYSCALL_NCS_TYPES): Likewise.
+
2015-12-16 Florian Weimer <fweimer@redhat.com>
[BZ #19243]
diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
index fc132f6..c364d08 100644
--- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
@@ -218,6 +218,9 @@
# undef INTERNAL_SYSCALL_DECL
# define INTERNAL_SYSCALL_DECL(err) do { } while (0)
+/* Registers clobbered by syscall. */
+# define REGISTERS_CLOBBERED_BY_SYSCALL "cc", "r11", "cx"
+
# define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
({ \
unsigned long int resultvar; \
@@ -226,7 +229,7 @@
asm volatile ( \
"syscall\n\t" \
: "=a" (resultvar) \
- : "0" (name) ASM_ARGS_##nr : "memory", "cc", "r11", "cx"); \
+ : "0" (name) ASM_ARGS_##nr : "memory", REGISTERS_CLOBBERED_BY_SYSCALL); \
(long int) resultvar; })
# undef INTERNAL_SYSCALL
# define INTERNAL_SYSCALL(name, err, nr, args...) \
@@ -240,7 +243,7 @@
asm volatile ( \
"syscall\n\t" \
: "=a" (resultvar) \
- : "0" (name) ASM_ARGS_##nr : "memory", "cc", "r11", "cx"); \
+ : "0" (name) ASM_ARGS_##nr : "memory", REGISTERS_CLOBBERED_BY_SYSCALL); \
(long int) resultvar; })
# undef INTERNAL_SYSCALL_TYPES
# define INTERNAL_SYSCALL_TYPES(name, err, nr, args...) \
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 7 +++++++
sysdeps/unix/sysv/linux/x86_64/sysdep.h | 7 +++++--
2 files changed, 12 insertions(+), 2 deletions(-)
hooks/post-receive
--
GNU C Library master sources