diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-06-17 20:17:49 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-06-17 20:17:49 +0000 |
commit | c21d37deb268afc45fbc5bba1a97f87afd0bf656 (patch) | |
tree | dc6313af5eaa7e05c0b127130a8d32b24f02625d /ChangeLog | |
parent | 90dd591393a03d023be06a33acfb42c1b328b0fa (diff) | |
download | glibc-c21d37deb268afc45fbc5bba1a97f87afd0bf656.tar.gz |
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.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -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 |