glibc/sysdeps/unix/syscalls.list
Adhemerval Zanella 5e46749c64 Use clock_gettime to implement gettimeofday.
Consolidate generic gettimeofday implementation to use clock_gettime.
Linux ports that still provide gettimeofday through vDSO are not
changed.

Remove sysdeps/unix/clock_gettime.c, which implemented clock_gettime
using gettimeofday; new OS ports must provide a real implementation of
clock_gettime.

Rename sysdeps/mach/gettimeofday.c to sysdeps/mach/clock_gettime.c and
convert into an implementation of clock_gettime.  It only supports
CLOCK_REALTIME; Mach does not appear to have any support for monotonic
clocks.  It uses __host_get_time, which provides at best microsecond
resolution.  Hurd is currently using sysdeps/posix/clock_getres.c for
clock_getres; its output for CLOCK_REALTIME is based on
sysconf (_SC_CLK_TCK), and I do not know whether that gives the
correct result.

Unlike settimeofday, there are no known uses of gettimeofday's
vestigial "get time zone" feature that are not bugs.  (The per-process
timezone support in localtime and friends is unrelated, and the
programs that set the kernel's offset between the hardware clock and
UTC do not need to read it back.)  Therefore, this feature is dummied
out.  Henceforth, if gettimeofday's "struct timezone" argument is not
NULL, it will write zeroes to both fields.  Any program that is
actually looking at this data will thus think it is running in UTC,
which is probably more correct than whatever it was doing before.

[__]gettimeofday no longer has any internal callers, so we can now
remove its internal prototype and PLT bypass aliases.  The
__gettimeofday@GLIBC_2.0 export remains, in case it is used by any
third-party code.

It also allows to simplify the arch-specific implementation on x86 and
powerpc to remove the hack to disable the internal route to non iFUNC
variant for internal symbol.

This patch also fixes a missing optimization on aarch64, powerpc, and
x86 where the code used on static build do not use the vDSO.

Checked on x86_64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu,
powerpc64-linux-gnu, powerpc-linux-gnu, and aarch64-linux-gnu.

Co-authored-by: Zack Weinberg <zackw@panix.com>
Reviewed-by: Lukasz Majewski <lukma@denx.de>
2019-10-30 17:11:10 -03:00

99 lines
4.0 KiB
Plaintext

# File name Caller Syscall name Args Strong name Weak names
accept - accept Ci:iBN __libc_accept accept
access - access i:si __access access
acct - acct i:S acct
adjtime - adjtime i:pp __adjtime adjtime
bind - bind i:ipi __bind bind
chdir - chdir i:s __chdir chdir
chmod - chmod i:si __chmod chmod
chown - chown i:sii __chown chown
chroot - chroot i:s chroot
close - close Ci:i __libc_close __close close
connect - connect Ci:ipi __libc_connect __connect connect
dup - dup i:i __dup dup
dup2 - dup2 i:ii __dup2 dup2
dup3 - dup3 i:iii __dup3 dup3
fchdir - fchdir i:i __fchdir fchdir
fchmod - fchmod i:ii __fchmod fchmod
fchown - fchown i:iii __fchown fchown
fcntl - fcntl Ci:iiF __libc_fcntl __fcntl fcntl
fstatfs - fstatfs i:ip __fstatfs fstatfs
ftruncate - ftruncate i:ii __ftruncate ftruncate
getdomain - getdomainname i:si getdomainname
getgid - getgid Ei: __getgid getgid
getgroups - getgroups i:ip __getgroups getgroups
gethostid - gethostid i: gethostid
gethostname - gethostname i:bn __gethostname gethostname
getitimer - getitimer i:ip __getitimer getitimer
getpeername - getpeername i:ibN __getpeername getpeername
getpid - getpid Ei: __getpid getpid
getpriority - getpriority i:ii __getpriority getpriority
getrlimit - getrlimit i:ip __getrlimit getrlimit
getrusage - getrusage i:ip __getrusage getrusage
getsockname - getsockname i:ibN __getsockname getsockname
getsockopt - getsockopt i:iiiBN getsockopt
getuid - getuid Ei: __getuid getuid
ioctl - ioctl i:iiI __ioctl ioctl
kill - kill i:ii __kill kill
link - link i:ss __link link
listen - listen i:ii __listen listen
lseek - lseek i:iii __libc_lseek __lseek lseek
madvise - madvise i:pii __madvise madvise
mkdir - mkdir i:si __mkdir mkdir
mmap - mmap b:aniiii __mmap mmap
mprotect - mprotect i:aii __mprotect mprotect
munmap - munmap i:ai __munmap munmap
open - open Ci:siv __libc_open __open open
profil - profil i:piii __profil profil
ptrace - ptrace i:iiii ptrace
read - read Ci:ibn __libc_read __read read
readlink - readlink i:spi __readlink readlink
readv - readv Ci:ipi __readv readv
reboot - reboot i:i reboot
recv - recv Ci:ibni __libc_recv recv
recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom
recvmsg - recvmsg Ci:ipi __libc_recvmsg __recvmsg recvmsg
rename - rename i:ss rename
rmdir - rmdir i:s __rmdir rmdir
select - select Ci:iPPPP __select __libc_select select
send - send Ci:ibni __libc_send __send send
sendmsg - sendmsg Ci:ipi __libc_sendmsg __sendmsg sendmsg
sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto
setdomain - setdomainname i:si setdomainname
setegid - setegid i:i __setegid setegid
seteuid - seteuid i:i __seteuid seteuid
setgid - setgid i:i __setgid setgid
setgroups - setgroups i:ip setgroups
sethostid - sethostid i:i sethostid
sethostname - sethostname i:pi sethostname
setitimer - setitimer i:ipp __setitimer setitimer
setpgid - setpgrp i:ii __setpgid setpgid
setpriority - setpriority i:iii __setpriority setpriority
setregid - setregid i:ii __setregid setregid
setreuid - setreuid i:ii __setreuid setreuid
setrlimit - setrlimit i:ip __setrlimit setrlimit
setsid - setsid i: __setsid setsid
setsockopt - setsockopt i:iiibn setsockopt __setsockopt
setuid - setuid i:i __setuid setuid
shutdown - shutdown i:ii shutdown
sigaction - sigaction i:ipp __sigaction sigaction
sigsuspend - sigsuspend Ci:p sigsuspend
socket - socket i:iii __socket socket
socketpair - socketpair i:iiif socketpair
sstk - sstk b:i sstk
statfs - statfs i:sp __statfs statfs
swapoff - swapoff i:s swapoff
swapon - swapon i:s swapon
symlink - symlink i:ss __symlink symlink
sync - sync i: sync
syncfs - syncfs i:i syncfs
truncate - truncate i:si __truncate truncate
umask - umask Ei:i __umask umask
uname - uname i:p __uname uname
unlink - unlink i:s __unlink unlink
utimes - utimes i:sp __utimes utimes
vhangup - vhangup i:i vhangup
write - write Ci:ibn __libc_write __write write
writev - writev Ci:ipi __writev writev