From c21d37deb268afc45fbc5bba1a97f87afd0bf656 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Wed, 17 Jun 2015 20:17:49 +0000 Subject: 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 * 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. --- sysdeps/unix/sysv/linux/syscalls.list | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'sysdeps/unix/sysv') diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 42b6c2ef42..09dd10d1ab 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 -- cgit 1.4.1