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.21-488-gc21d37d
- From: jsm28 at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 17 Jun 2015 20:18:09 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.21-488-gc21d37d
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 c21d37deb268afc45fbc5bba1a97f87afd0bf656 (commit)
from 90dd591393a03d023be06a33acfb42c1b328b0fa (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=c21d37deb268afc45fbc5bba1a97f87afd0bf656
commit c21d37deb268afc45fbc5bba1a97f87afd0bf656
Author: Joseph Myers <joseph@codesourcery.com>
Date: Wed Jun 17 20:17:49 2015 +0000
Create hidden aliases for non-libc syscalls automatically.
The syscall wrappers mechanism automatically creates hidden aliases
for syscalls with libc_hidden_def / libc_hidden_weak. The use of
libc_hidden_* has the side-effect that for syscall wrappers in
non-libc libraries those aliases are not created. In turn, this means
that three mq_* syscalls in sysdeps/unix/sysv/linux/syscalls.list list
the __GI_* names explicitly.
The use of libc_hidden_* dates back to the original introduction of
that support in
2002-08-03 Roland McGrath <roland@redhat.com>
* sysdeps/unix/make-syscalls.sh: Generate libc_hidden_def or
libc_hidden_weak for every system call symbol defined.
(predating the non-libc syscalls in question) and I see no reason for
excluding non-libc syscalls. This patch changes the code to use
hidden_def / hidden_weak (via a wrapper syscall_hidden_def in the case
where the argument is itself a macro, so that the argument gets
expanded before concatenation with __GI_), so avoiding the need to
specify the hidden aliases explicitly in this case.
Tested for x86_64 and x86 (testsuite, and that disassembly of
installed stripped shared libraries is unchanged by the patch; the
mq_* symbols change from weak to strong, which is of no significance
and two of them will shortly change back to weak as part of a fix for
bug 18545).
* sysdeps/unix/make-syscalls.sh (emit_weak_aliases): Use
hidden_def and hidden_weak instead of libc_hidden_def and
libc_hidden_weak.
(top level): Refer to hidden_def in comment.
* sysdeps/unix/syscall-template.S (syscall_hidden_def): New
macro. Use it instead of libc_hidden_def.
* sysdeps/unix/sysv/linux/syscalls.list (mq_timedsend): Do not
specify __GI_* name explicitly.
(mq_timedreceive): Likewise.
(mq_setattr): Likewise.
diff --git a/ChangeLog b/ChangeLog
index 5b1226a..2ec139f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
2015-06-17 Joseph Myers <joseph@codesourcery.com>
+ * sysdeps/unix/make-syscalls.sh (emit_weak_aliases): Use
+ hidden_def and hidden_weak instead of libc_hidden_def and
+ libc_hidden_weak.
+ (top level): Refer to hidden_def in comment.
+ * sysdeps/unix/syscall-template.S (syscall_hidden_def): New
+ macro. Use it instead of libc_hidden_def.
+ * sysdeps/unix/sysv/linux/syscalls.list (mq_timedsend): Do not
+ specify __GI_* name explicitly.
+ (mq_timedreceive): Likewise.
+ (mq_setattr): Likewise.
+
[BZ #18544]
* nptl/pthread_barrier_init.c (pthread_barrier_init): Rename to
__pthread_barrier_init and define as weak alias of
diff --git a/sysdeps/unix/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh
index 12f664e..fbf9660 100644
--- a/sysdeps/unix/make-syscalls.sh
+++ b/sysdeps/unix/make-syscalls.sh
@@ -128,11 +128,11 @@ emit_weak_aliases()
!*)
name=`echo $name | sed 's/.//'`
echo " echo 'strong_alias ($strong, $name)'; \\"
- echo " echo 'libc_hidden_def ($name)'; \\"
+ echo " echo 'hidden_def ($name)'; \\"
;;
*)
echo " echo 'weak_alias ($strong, $name)'; \\"
- echo " echo 'libc_hidden_weak ($name)'; \\"
+ echo " echo 'hidden_weak ($name)'; \\"
;;
esac
done
@@ -287,7 +287,7 @@ while read file srcfile caller syscall args strong weak; do
echo '}'; \\
echo 'asm (".type ${strong}, %gnu_indirect_function");'; \\
EOF
- # This is doing "libc_hidden_def (${strong})", but the compiler
+ # This is doing "hidden_def (${strong})", but the compiler
# doesn't know that we've defined ${strong} in the same file, so
# we can't do it the normal way.
cat <<EOF
diff --git a/sysdeps/unix/syscall-template.S b/sysdeps/unix/syscall-template.S
index 62ebe02..e86e6a7 100644
--- a/sysdeps/unix/syscall-template.S
+++ b/sysdeps/unix/syscall-template.S
@@ -47,6 +47,9 @@
# include <sysdep.h>
#endif
+/* This indirection is needed so that SYMBOL gets macro-expanded. */
+#define syscall_hidden_def(SYMBOL) hidden_def (SYMBOL)
+
#define T_PSEUDO(SYMBOL, NAME, N) PSEUDO (SYMBOL, NAME, N)
#define T_PSEUDO_NOERRNO(SYMBOL, NAME, N) PSEUDO_NOERRNO (SYMBOL, NAME, N)
#define T_PSEUDO_ERRVAL(SYMBOL, NAME, N) PSEUDO_ERRVAL (SYMBOL, NAME, N)
@@ -84,4 +87,4 @@ T_PSEUDO_END (SYSCALL_SYMBOL)
#endif
-libc_hidden_def (SYSCALL_SYMBOL)
+syscall_hidden_def (SYSCALL_SYMBOL)
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index 42b6c2e..09dd10d 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -106,9 +106,9 @@ removexattr - removexattr i:ss removexattr
lremovexattr - lremovexattr i:ss lremovexattr
fremovexattr - fremovexattr i:is fremovexattr
-mq_timedsend - mq_timedsend Ci:ipiip __GI_mq_timedsend mq_timedsend
-mq_timedreceive - mq_timedreceive Ci:ipipp __GI_mq_timedreceive mq_timedreceive
-mq_setattr - mq_getsetattr i:ipp __GI_mq_setattr mq_setattr
+mq_timedsend - mq_timedsend Ci:ipiip mq_timedsend
+mq_timedreceive - mq_timedreceive Ci:ipipp mq_timedreceive
+mq_setattr - mq_getsetattr i:ipp mq_setattr
timerfd_create EXTRA timerfd_create i:ii timerfd_create
timerfd_settime EXTRA timerfd_settime i:iipp timerfd_settime
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 11 +++++++++++
sysdeps/unix/make-syscalls.sh | 6 +++---
sysdeps/unix/syscall-template.S | 5 ++++-
sysdeps/unix/sysv/linux/syscalls.list | 6 +++---
4 files changed, 21 insertions(+), 7 deletions(-)
hooks/post-receive
--
GNU C Library master sources