Use an architecture-independent system call list (#1484729)
This commit is contained in:
parent
a4f378196e
commit
5bc208c4f5
603
glibc-rh1484729-syscall-names.patch
Normal file
603
glibc-rh1484729-syscall-names.patch
Normal file
@ -0,0 +1,603 @@
|
|||||||
|
The explicit system call list for system call management was not
|
||||||
|
accepted upstream.
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/syscall-names.list b/sysdeps/unix/sysv/linux/syscall-names.list
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..459b2226
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/syscall-names.list
|
||||||
|
@@ -0,0 +1,595 @@
|
||||||
|
+# List of all known Linux system calls.
|
||||||
|
+# Copyright (C) 2017 Free Software Foundation, Inc.
|
||||||
|
+# This file is part of the GNU C Library.
|
||||||
|
+#
|
||||||
|
+# The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
+# modify it under the terms of the GNU Lesser General Public
|
||||||
|
+# License as published by the Free Software Foundation; either
|
||||||
|
+# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+#
|
||||||
|
+# The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+# Lesser General Public License for more details.
|
||||||
|
+#
|
||||||
|
+# You should have received a copy of the GNU Lesser General Public
|
||||||
|
+# License along with the GNU C Library; if not, see
|
||||||
|
+# <http://www.gnu.org/licenses/>.
|
||||||
|
+
|
||||||
|
+# This file contains the list of system call names names. It has to
|
||||||
|
+# remain in alphabetica order. Lines which start with # are treated
|
||||||
|
+# as comments. This file can list all potential system calls. The
|
||||||
|
+# names are only used if the installed kernel headers also provide
|
||||||
|
+# them.
|
||||||
|
+
|
||||||
|
+# The list of system calls is current as of Linux 4.11.
|
||||||
|
+kernel 4.11
|
||||||
|
+
|
||||||
|
+FAST_atomic_update
|
||||||
|
+FAST_cmpxchg
|
||||||
|
+FAST_cmpxchg64
|
||||||
|
+_llseek
|
||||||
|
+_newselect
|
||||||
|
+_sysctl
|
||||||
|
+accept
|
||||||
|
+accept4
|
||||||
|
+access
|
||||||
|
+acct
|
||||||
|
+add_key
|
||||||
|
+adjtimex
|
||||||
|
+afs_syscall
|
||||||
|
+alarm
|
||||||
|
+arch_prctl
|
||||||
|
+arm_fadvise64_64
|
||||||
|
+arm_sync_file_range
|
||||||
|
+atomic_barrier
|
||||||
|
+atomic_cmpxchg_32
|
||||||
|
+bdflush
|
||||||
|
+bind
|
||||||
|
+bpf
|
||||||
|
+break
|
||||||
|
+brk
|
||||||
|
+cachectl
|
||||||
|
+cacheflush
|
||||||
|
+capget
|
||||||
|
+capset
|
||||||
|
+chdir
|
||||||
|
+chmod
|
||||||
|
+chown
|
||||||
|
+chown32
|
||||||
|
+chroot
|
||||||
|
+clock_adjtime
|
||||||
|
+clock_getres
|
||||||
|
+clock_gettime
|
||||||
|
+clock_nanosleep
|
||||||
|
+clock_settime
|
||||||
|
+clone
|
||||||
|
+clone2
|
||||||
|
+close
|
||||||
|
+cmpxchg_badaddr
|
||||||
|
+connect
|
||||||
|
+copy_file_range
|
||||||
|
+creat
|
||||||
|
+create_module
|
||||||
|
+delete_module
|
||||||
|
+dipc
|
||||||
|
+dup
|
||||||
|
+dup2
|
||||||
|
+dup3
|
||||||
|
+epoll_create
|
||||||
|
+epoll_create1
|
||||||
|
+epoll_ctl
|
||||||
|
+epoll_ctl_old
|
||||||
|
+epoll_pwait
|
||||||
|
+epoll_wait
|
||||||
|
+epoll_wait_old
|
||||||
|
+eventfd
|
||||||
|
+eventfd2
|
||||||
|
+exec_with_loader
|
||||||
|
+execv
|
||||||
|
+execve
|
||||||
|
+execveat
|
||||||
|
+exit
|
||||||
|
+exit_group
|
||||||
|
+faccessat
|
||||||
|
+fadvise64
|
||||||
|
+fadvise64_64
|
||||||
|
+fallocate
|
||||||
|
+fanotify_init
|
||||||
|
+fanotify_mark
|
||||||
|
+fchdir
|
||||||
|
+fchmod
|
||||||
|
+fchmodat
|
||||||
|
+fchown
|
||||||
|
+fchown32
|
||||||
|
+fchownat
|
||||||
|
+fcntl
|
||||||
|
+fcntl64
|
||||||
|
+fdatasync
|
||||||
|
+fgetxattr
|
||||||
|
+finit_module
|
||||||
|
+flistxattr
|
||||||
|
+flock
|
||||||
|
+fork
|
||||||
|
+fremovexattr
|
||||||
|
+fsetxattr
|
||||||
|
+fstat
|
||||||
|
+fstat64
|
||||||
|
+fstatat64
|
||||||
|
+fstatfs
|
||||||
|
+fstatfs64
|
||||||
|
+fsync
|
||||||
|
+ftime
|
||||||
|
+ftruncate
|
||||||
|
+ftruncate64
|
||||||
|
+futex
|
||||||
|
+futimesat
|
||||||
|
+get_kernel_syms
|
||||||
|
+get_mempolicy
|
||||||
|
+get_robust_list
|
||||||
|
+get_thread_area
|
||||||
|
+getcpu
|
||||||
|
+getcwd
|
||||||
|
+getdents
|
||||||
|
+getdents64
|
||||||
|
+getdomainname
|
||||||
|
+getdtablesize
|
||||||
|
+getegid
|
||||||
|
+getegid32
|
||||||
|
+geteuid
|
||||||
|
+geteuid32
|
||||||
|
+getgid
|
||||||
|
+getgid32
|
||||||
|
+getgroups
|
||||||
|
+getgroups32
|
||||||
|
+gethostname
|
||||||
|
+getitimer
|
||||||
|
+getpagesize
|
||||||
|
+getpeername
|
||||||
|
+getpgid
|
||||||
|
+getpgrp
|
||||||
|
+getpid
|
||||||
|
+getpmsg
|
||||||
|
+getppid
|
||||||
|
+getpriority
|
||||||
|
+getrandom
|
||||||
|
+getresgid
|
||||||
|
+getresgid32
|
||||||
|
+getresuid
|
||||||
|
+getresuid32
|
||||||
|
+getrlimit
|
||||||
|
+getrusage
|
||||||
|
+getsid
|
||||||
|
+getsockname
|
||||||
|
+getsockopt
|
||||||
|
+gettid
|
||||||
|
+gettimeofday
|
||||||
|
+getuid
|
||||||
|
+getuid32
|
||||||
|
+getunwind
|
||||||
|
+getxattr
|
||||||
|
+getxgid
|
||||||
|
+getxpid
|
||||||
|
+getxuid
|
||||||
|
+gtty
|
||||||
|
+idle
|
||||||
|
+init_module
|
||||||
|
+inotify_add_watch
|
||||||
|
+inotify_init
|
||||||
|
+inotify_init1
|
||||||
|
+inotify_rm_watch
|
||||||
|
+io_cancel
|
||||||
|
+io_destroy
|
||||||
|
+io_getevents
|
||||||
|
+io_setup
|
||||||
|
+io_submit
|
||||||
|
+ioctl
|
||||||
|
+ioperm
|
||||||
|
+iopl
|
||||||
|
+ioprio_get
|
||||||
|
+ioprio_set
|
||||||
|
+ipc
|
||||||
|
+kcmp
|
||||||
|
+kern_features
|
||||||
|
+kexec_file_load
|
||||||
|
+kexec_load
|
||||||
|
+keyctl
|
||||||
|
+kill
|
||||||
|
+lchown
|
||||||
|
+lchown32
|
||||||
|
+lgetxattr
|
||||||
|
+link
|
||||||
|
+linkat
|
||||||
|
+listen
|
||||||
|
+listxattr
|
||||||
|
+llistxattr
|
||||||
|
+llseek
|
||||||
|
+lock
|
||||||
|
+lookup_dcookie
|
||||||
|
+lremovexattr
|
||||||
|
+lseek
|
||||||
|
+lsetxattr
|
||||||
|
+lstat
|
||||||
|
+lstat64
|
||||||
|
+madvise
|
||||||
|
+mbind
|
||||||
|
+membarrier
|
||||||
|
+memfd_create
|
||||||
|
+memory_ordering
|
||||||
|
+migrate_pages
|
||||||
|
+mincore
|
||||||
|
+mkdir
|
||||||
|
+mkdirat
|
||||||
|
+mknod
|
||||||
|
+mknodat
|
||||||
|
+mlock
|
||||||
|
+mlock2
|
||||||
|
+mlockall
|
||||||
|
+mmap
|
||||||
|
+mmap2
|
||||||
|
+modify_ldt
|
||||||
|
+mount
|
||||||
|
+move_pages
|
||||||
|
+mprotect
|
||||||
|
+mpx
|
||||||
|
+mq_getsetattr
|
||||||
|
+mq_notify
|
||||||
|
+mq_open
|
||||||
|
+mq_timedreceive
|
||||||
|
+mq_timedsend
|
||||||
|
+mq_unlink
|
||||||
|
+mremap
|
||||||
|
+msgctl
|
||||||
|
+msgget
|
||||||
|
+msgrcv
|
||||||
|
+msgsnd
|
||||||
|
+msync
|
||||||
|
+multiplexer
|
||||||
|
+munlock
|
||||||
|
+munlockall
|
||||||
|
+munmap
|
||||||
|
+name_to_handle_at
|
||||||
|
+nanosleep
|
||||||
|
+newfstatat
|
||||||
|
+nfsservctl
|
||||||
|
+ni_syscall
|
||||||
|
+nice
|
||||||
|
+old_adjtimex
|
||||||
|
+oldfstat
|
||||||
|
+oldlstat
|
||||||
|
+oldolduname
|
||||||
|
+oldstat
|
||||||
|
+oldumount
|
||||||
|
+olduname
|
||||||
|
+open
|
||||||
|
+open_by_handle_at
|
||||||
|
+openat
|
||||||
|
+osf_adjtime
|
||||||
|
+osf_afs_syscall
|
||||||
|
+osf_alt_plock
|
||||||
|
+osf_alt_setsid
|
||||||
|
+osf_alt_sigpending
|
||||||
|
+osf_asynch_daemon
|
||||||
|
+osf_audcntl
|
||||||
|
+osf_audgen
|
||||||
|
+osf_chflags
|
||||||
|
+osf_execve
|
||||||
|
+osf_exportfs
|
||||||
|
+osf_fchflags
|
||||||
|
+osf_fdatasync
|
||||||
|
+osf_fpathconf
|
||||||
|
+osf_fstat
|
||||||
|
+osf_fstatfs
|
||||||
|
+osf_fstatfs64
|
||||||
|
+osf_fuser
|
||||||
|
+osf_getaddressconf
|
||||||
|
+osf_getdirentries
|
||||||
|
+osf_getdomainname
|
||||||
|
+osf_getfh
|
||||||
|
+osf_getfsstat
|
||||||
|
+osf_gethostid
|
||||||
|
+osf_getitimer
|
||||||
|
+osf_getlogin
|
||||||
|
+osf_getmnt
|
||||||
|
+osf_getrusage
|
||||||
|
+osf_getsysinfo
|
||||||
|
+osf_gettimeofday
|
||||||
|
+osf_kloadcall
|
||||||
|
+osf_kmodcall
|
||||||
|
+osf_lstat
|
||||||
|
+osf_memcntl
|
||||||
|
+osf_mincore
|
||||||
|
+osf_mount
|
||||||
|
+osf_mremap
|
||||||
|
+osf_msfs_syscall
|
||||||
|
+osf_msleep
|
||||||
|
+osf_mvalid
|
||||||
|
+osf_mwakeup
|
||||||
|
+osf_naccept
|
||||||
|
+osf_nfssvc
|
||||||
|
+osf_ngetpeername
|
||||||
|
+osf_ngetsockname
|
||||||
|
+osf_nrecvfrom
|
||||||
|
+osf_nrecvmsg
|
||||||
|
+osf_nsendmsg
|
||||||
|
+osf_ntp_adjtime
|
||||||
|
+osf_ntp_gettime
|
||||||
|
+osf_old_creat
|
||||||
|
+osf_old_fstat
|
||||||
|
+osf_old_getpgrp
|
||||||
|
+osf_old_killpg
|
||||||
|
+osf_old_lstat
|
||||||
|
+osf_old_open
|
||||||
|
+osf_old_sigaction
|
||||||
|
+osf_old_sigblock
|
||||||
|
+osf_old_sigreturn
|
||||||
|
+osf_old_sigsetmask
|
||||||
|
+osf_old_sigvec
|
||||||
|
+osf_old_stat
|
||||||
|
+osf_old_vadvise
|
||||||
|
+osf_old_vtrace
|
||||||
|
+osf_old_wait
|
||||||
|
+osf_oldquota
|
||||||
|
+osf_pathconf
|
||||||
|
+osf_pid_block
|
||||||
|
+osf_pid_unblock
|
||||||
|
+osf_plock
|
||||||
|
+osf_priocntlset
|
||||||
|
+osf_profil
|
||||||
|
+osf_proplist_syscall
|
||||||
|
+osf_reboot
|
||||||
|
+osf_revoke
|
||||||
|
+osf_sbrk
|
||||||
|
+osf_security
|
||||||
|
+osf_select
|
||||||
|
+osf_set_program_attributes
|
||||||
|
+osf_set_speculative
|
||||||
|
+osf_sethostid
|
||||||
|
+osf_setitimer
|
||||||
|
+osf_setlogin
|
||||||
|
+osf_setsysinfo
|
||||||
|
+osf_settimeofday
|
||||||
|
+osf_shmat
|
||||||
|
+osf_signal
|
||||||
|
+osf_sigprocmask
|
||||||
|
+osf_sigsendset
|
||||||
|
+osf_sigstack
|
||||||
|
+osf_sigwaitprim
|
||||||
|
+osf_sstk
|
||||||
|
+osf_stat
|
||||||
|
+osf_statfs
|
||||||
|
+osf_statfs64
|
||||||
|
+osf_subsys_info
|
||||||
|
+osf_swapctl
|
||||||
|
+osf_swapon
|
||||||
|
+osf_syscall
|
||||||
|
+osf_sysinfo
|
||||||
|
+osf_table
|
||||||
|
+osf_uadmin
|
||||||
|
+osf_usleep_thread
|
||||||
|
+osf_uswitch
|
||||||
|
+osf_utc_adjtime
|
||||||
|
+osf_utc_gettime
|
||||||
|
+osf_utimes
|
||||||
|
+osf_utsname
|
||||||
|
+osf_wait4
|
||||||
|
+osf_waitid
|
||||||
|
+pause
|
||||||
|
+pciconfig_iobase
|
||||||
|
+pciconfig_read
|
||||||
|
+pciconfig_write
|
||||||
|
+perf_event_open
|
||||||
|
+perfctr
|
||||||
|
+perfmonctl
|
||||||
|
+personality
|
||||||
|
+pipe
|
||||||
|
+pipe2
|
||||||
|
+pivot_root
|
||||||
|
+pkey_alloc
|
||||||
|
+pkey_free
|
||||||
|
+pkey_mprotect
|
||||||
|
+poll
|
||||||
|
+ppoll
|
||||||
|
+prctl
|
||||||
|
+pread64
|
||||||
|
+preadv
|
||||||
|
+preadv2
|
||||||
|
+prlimit64
|
||||||
|
+process_vm_readv
|
||||||
|
+process_vm_writev
|
||||||
|
+prof
|
||||||
|
+profil
|
||||||
|
+pselect6
|
||||||
|
+ptrace
|
||||||
|
+putpmsg
|
||||||
|
+pwrite64
|
||||||
|
+pwritev
|
||||||
|
+pwritev2
|
||||||
|
+query_module
|
||||||
|
+quotactl
|
||||||
|
+read
|
||||||
|
+readahead
|
||||||
|
+readdir
|
||||||
|
+readlink
|
||||||
|
+readlinkat
|
||||||
|
+readv
|
||||||
|
+reboot
|
||||||
|
+recv
|
||||||
|
+recvfrom
|
||||||
|
+recvmmsg
|
||||||
|
+recvmsg
|
||||||
|
+remap_file_pages
|
||||||
|
+removexattr
|
||||||
|
+rename
|
||||||
|
+renameat
|
||||||
|
+renameat2
|
||||||
|
+request_key
|
||||||
|
+restart_syscall
|
||||||
|
+rmdir
|
||||||
|
+rt_sigaction
|
||||||
|
+rt_sigpending
|
||||||
|
+rt_sigprocmask
|
||||||
|
+rt_sigqueueinfo
|
||||||
|
+rt_sigreturn
|
||||||
|
+rt_sigsuspend
|
||||||
|
+rt_sigtimedwait
|
||||||
|
+rt_tgsigqueueinfo
|
||||||
|
+rtas
|
||||||
|
+s390_pci_mmio_read
|
||||||
|
+s390_pci_mmio_write
|
||||||
|
+s390_runtime_instr
|
||||||
|
+sched_get_affinity
|
||||||
|
+sched_get_priority_max
|
||||||
|
+sched_get_priority_min
|
||||||
|
+sched_getaffinity
|
||||||
|
+sched_getattr
|
||||||
|
+sched_getparam
|
||||||
|
+sched_getscheduler
|
||||||
|
+sched_rr_get_interval
|
||||||
|
+sched_set_affinity
|
||||||
|
+sched_setaffinity
|
||||||
|
+sched_setattr
|
||||||
|
+sched_setparam
|
||||||
|
+sched_setscheduler
|
||||||
|
+sched_yield
|
||||||
|
+seccomp
|
||||||
|
+security
|
||||||
|
+select
|
||||||
|
+semctl
|
||||||
|
+semget
|
||||||
|
+semop
|
||||||
|
+semtimedop
|
||||||
|
+send
|
||||||
|
+sendfile
|
||||||
|
+sendfile64
|
||||||
|
+sendmmsg
|
||||||
|
+sendmsg
|
||||||
|
+sendto
|
||||||
|
+set_mempolicy
|
||||||
|
+set_robust_list
|
||||||
|
+set_thread_area
|
||||||
|
+set_tid_address
|
||||||
|
+setdomainname
|
||||||
|
+setfsgid
|
||||||
|
+setfsgid32
|
||||||
|
+setfsuid
|
||||||
|
+setfsuid32
|
||||||
|
+setgid
|
||||||
|
+setgid32
|
||||||
|
+setgroups
|
||||||
|
+setgroups32
|
||||||
|
+sethae
|
||||||
|
+sethostname
|
||||||
|
+setitimer
|
||||||
|
+setns
|
||||||
|
+setpgid
|
||||||
|
+setpgrp
|
||||||
|
+setpriority
|
||||||
|
+setregid
|
||||||
|
+setregid32
|
||||||
|
+setresgid
|
||||||
|
+setresgid32
|
||||||
|
+setresuid
|
||||||
|
+setresuid32
|
||||||
|
+setreuid
|
||||||
|
+setreuid32
|
||||||
|
+setrlimit
|
||||||
|
+setsid
|
||||||
|
+setsockopt
|
||||||
|
+settimeofday
|
||||||
|
+setuid
|
||||||
|
+setuid32
|
||||||
|
+setxattr
|
||||||
|
+sgetmask
|
||||||
|
+shmat
|
||||||
|
+shmctl
|
||||||
|
+shmdt
|
||||||
|
+shmget
|
||||||
|
+shutdown
|
||||||
|
+sigaction
|
||||||
|
+sigaltstack
|
||||||
|
+signal
|
||||||
|
+signalfd
|
||||||
|
+signalfd4
|
||||||
|
+sigpending
|
||||||
|
+sigprocmask
|
||||||
|
+sigreturn
|
||||||
|
+sigsuspend
|
||||||
|
+socket
|
||||||
|
+socketcall
|
||||||
|
+socketpair
|
||||||
|
+splice
|
||||||
|
+spu_create
|
||||||
|
+spu_run
|
||||||
|
+ssetmask
|
||||||
|
+stat
|
||||||
|
+stat64
|
||||||
|
+statfs
|
||||||
|
+statfs64
|
||||||
|
+statx
|
||||||
|
+stime
|
||||||
|
+stty
|
||||||
|
+subpage_prot
|
||||||
|
+swapcontext
|
||||||
|
+swapoff
|
||||||
|
+swapon
|
||||||
|
+switch_endian
|
||||||
|
+symlink
|
||||||
|
+symlinkat
|
||||||
|
+sync
|
||||||
|
+sync_file_range
|
||||||
|
+sync_file_range2
|
||||||
|
+syncfs
|
||||||
|
+sys_debug_setcontext
|
||||||
|
+sys_epoll_create
|
||||||
|
+sys_epoll_ctl
|
||||||
|
+sys_epoll_wait
|
||||||
|
+syscall
|
||||||
|
+sysfs
|
||||||
|
+sysinfo
|
||||||
|
+syslog
|
||||||
|
+sysmips
|
||||||
|
+tee
|
||||||
|
+tgkill
|
||||||
|
+time
|
||||||
|
+timer_create
|
||||||
|
+timer_delete
|
||||||
|
+timer_getoverrun
|
||||||
|
+timer_gettime
|
||||||
|
+timer_settime
|
||||||
|
+timerfd
|
||||||
|
+timerfd_create
|
||||||
|
+timerfd_gettime
|
||||||
|
+timerfd_settime
|
||||||
|
+times
|
||||||
|
+tkill
|
||||||
|
+truncate
|
||||||
|
+truncate64
|
||||||
|
+tuxcall
|
||||||
|
+ugetrlimit
|
||||||
|
+ulimit
|
||||||
|
+umask
|
||||||
|
+umount
|
||||||
|
+umount2
|
||||||
|
+uname
|
||||||
|
+unlink
|
||||||
|
+unlinkat
|
||||||
|
+unshare
|
||||||
|
+uselib
|
||||||
|
+userfaultfd
|
||||||
|
+ustat
|
||||||
|
+utime
|
||||||
|
+utimensat
|
||||||
|
+utimes
|
||||||
|
+utrap_install
|
||||||
|
+vfork
|
||||||
|
+vhangup
|
||||||
|
+vm86
|
||||||
|
+vm86old
|
||||||
|
+vmsplice
|
||||||
|
+vserver
|
||||||
|
+wait4
|
||||||
|
+waitid
|
||||||
|
+waitpid
|
||||||
|
+write
|
||||||
|
+writev
|
346
glibc-rh1484729.patch
Normal file
346
glibc-rh1484729.patch
Normal file
@ -0,0 +1,346 @@
|
|||||||
|
Posted upstream at:
|
||||||
|
|
||||||
|
https://sourceware.org/ml/libc-alpha/2017-04/msg00082.html
|
||||||
|
|
||||||
|
sysdeps/unix/sysv/linux/syscall-names.list is stored as a separate patch
|
||||||
|
(glibc-rh1439165-syscall-names.patch) in the source RPM for easier
|
||||||
|
updates.
|
||||||
|
|
||||||
|
Author: Florian Weimer <fweimer@redhat.com>
|
||||||
|
|
||||||
|
<bits/syscall.h>: Use an arch-independent system call list on Linux
|
||||||
|
|
||||||
|
This commit changes the way the list of SYS_* system call macros
|
||||||
|
is created on Linux. glibc now contains a list of all known system
|
||||||
|
calls, and the generated <bits/syscall.h> file defines the SYS_
|
||||||
|
macro only if the correspnding __NR_ macro is defined by the kernel
|
||||||
|
headers.
|
||||||
|
|
||||||
|
As a result, there glibc does not have to be rebuilt to pick up
|
||||||
|
system calls if the glibc sources already know about them. This
|
||||||
|
means that glibc can be built with older kernel headers, and if
|
||||||
|
the installed kernel headers are upgraded afterwards, additional
|
||||||
|
SYS_ macros become available as long as glibc has a record for
|
||||||
|
those system calls.
|
||||||
|
|
||||||
|
The explicit system call list for system call management was not
|
||||||
|
accepted upstream.
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
|
||||||
|
index 9d6a2de8..bb7a3c78 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/Makefile
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/Makefile
|
||||||
|
@@ -52,75 +52,46 @@ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
|
||||||
|
tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \
|
||||||
|
tst-quota tst-sync_file_range test-errno-linux
|
||||||
|
|
||||||
|
-# Generate the list of SYS_* macros for the system calls (__NR_* macros).
|
||||||
|
-
|
||||||
|
-# If there is more than one syscall list for different architecture
|
||||||
|
-# variants, the CPU/Makefile defines abi-variants to be a list of names
|
||||||
|
-# for those variants (e.g. 32 64), and, for each variant, defines
|
||||||
|
-# abi-$(variant)-options to be compiler options to cause <asm/unistd.h>
|
||||||
|
-# to define the desired list of syscalls and abi-$(variant)-condition to
|
||||||
|
-# be the condition for those options to use in a C #if condition.
|
||||||
|
-# abi-includes may be defined to a list of headers to include
|
||||||
|
-# in the generated header, if the default does not suffice.
|
||||||
|
-#
|
||||||
|
-# The generated header is compiled with `-ffreestanding' to avoid any
|
||||||
|
-# circular dependencies against the installed implementation headers.
|
||||||
|
-# Such a dependency would require the implementation header to be
|
||||||
|
-# installed before the generated header could be built (See bug 15711).
|
||||||
|
-# In current practice the generated header dependencies do not include
|
||||||
|
-# any of the implementation headers removed by the use of `-ffreestanding'.
|
||||||
|
-
|
||||||
|
-$(objpfx)bits/syscall%h $(objpfx)bits/syscall%d: ../sysdeps/unix/sysv/linux/sys/syscall.h
|
||||||
|
+# Generate the list of SYS_* macros for the system calls (__NR_*
|
||||||
|
+# macros). The file syscall-names.list contains all possible system
|
||||||
|
+# call names, and the generated header file produces SYS_* macros for
|
||||||
|
+# the __NR_* macros which are actually defined.
|
||||||
|
+
|
||||||
|
+generated += bits/syscall.h
|
||||||
|
+$(objpfx)bits/syscall.h: \
|
||||||
|
+ ../sysdeps/unix/sysv/linux/gen-syscall-h.awk \
|
||||||
|
+ ../sysdeps/unix/sysv/linux/syscall-names.list
|
||||||
|
$(make-target-directory)
|
||||||
|
- { \
|
||||||
|
- echo '/* Generated at libc build time from kernel syscall list. */';\
|
||||||
|
- echo ''; \
|
||||||
|
- echo '#ifndef _SYSCALL_H'; \
|
||||||
|
- echo '# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."'; \
|
||||||
|
- echo '#endif'; \
|
||||||
|
- echo ''; \
|
||||||
|
- $(foreach h,$(abi-includes), echo '#include <$(h)>';) \
|
||||||
|
- echo ''; \
|
||||||
|
- $(if $(abi-variants), \
|
||||||
|
- $(foreach v,$(abi-variants),\
|
||||||
|
- $(CC) -ffreestanding -E -MD -MP -MF $(@:.h=.d)-t$(v) -MT '$(@:.d=.h) $(@:.h=.d)' \
|
||||||
|
- -x c $(sysincludes) $< $(abi-$(v)-options) \
|
||||||
|
- -D_LIBC -dM | \
|
||||||
|
- sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
|
||||||
|
- LC_ALL=C sort > $(@:.d=.h).new$(v); \
|
||||||
|
- $(if $(abi-$(v)-condition),\
|
||||||
|
- echo '#if $(abi-$(v)-condition)';) \
|
||||||
|
- cat $(@:.d=.h).new$(v); \
|
||||||
|
- $(if $(abi-$(v)-condition),echo '#endif';) \
|
||||||
|
- rm -f $(@:.d=.h).new$(v); \
|
||||||
|
- ), \
|
||||||
|
- $(CC) -ffreestanding -E -MD -MP -MF $(@:.h=.d)-t$(v) -MT '$(@:.d=.h) $(@:.h=.d)' \
|
||||||
|
- -x c $(sysincludes) $< \
|
||||||
|
- -D_LIBC -dM | \
|
||||||
|
- sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
|
||||||
|
- LC_ALL=C sort;) \
|
||||||
|
- } > $(@:.d=.h).new
|
||||||
|
- mv -f $(@:.d=.h).new $(@:.d=.h)
|
||||||
|
-ifdef abi-variants
|
||||||
|
-ifneq (,$(objpfx))
|
||||||
|
- sed $(sed-remove-objpfx) \
|
||||||
|
- $(foreach v,$(abi-variants),$(@:.h=.d)-t$(v)) > $(@:.h=.d)-t3
|
||||||
|
-else
|
||||||
|
- cat $(foreach v,$(abi-variants),$(@:.h=.d)-t$(v)) \
|
||||||
|
- > $(@:.h=.d)-t3
|
||||||
|
-endif
|
||||||
|
- rm -f $(foreach v,$(abi-variants),$(@:.h=.d)-t$(v))
|
||||||
|
- mv -f $(@:.h=.d)-t3 $(@:.h=.d)
|
||||||
|
-else
|
||||||
|
- mv -f $(@:.h=.d)-t $(@:.h=.d)
|
||||||
|
-endif
|
||||||
|
-
|
||||||
|
-ifndef no_deps
|
||||||
|
-# Get the generated list of dependencies (probably /usr/include/asm/unistd.h).
|
||||||
|
--include $(objpfx)bits/syscall.d
|
||||||
|
-endif
|
||||||
|
-generated += bits/syscall.h bits/syscall.d
|
||||||
|
-endif
|
||||||
|
+ $(AWK) -f $^ > $@-tmp
|
||||||
|
+ $(move-if-change) $@-tmp $@
|
||||||
|
+
|
||||||
|
+# All macros defined by <sys/syscall.h>. Include <bits/syscall.h>
|
||||||
|
+# explicitly because <sys/sycall.h> skips it if _LIBC is defined.
|
||||||
|
+$(objpfx)tst-syscall-list-macros.list: \
|
||||||
|
+ $(objpfx)bits/syscall.h ../sysdeps/unix/sysv/linux/sys/syscall.h
|
||||||
|
+ printf '#include <sys/syscall.h>\n#include <bits/syscall.h>\n' | \
|
||||||
|
+ $(CC) -E -o $@-tmp $(CFLAGS) $(CPPFLAGS) -x c - -dM
|
||||||
|
+ $(move-if-change) $@-tmp $@
|
||||||
|
+
|
||||||
|
+# __NR_* system call names. Used by the test below.
|
||||||
|
+$(objpfx)tst-syscall-list-nr.list: \
|
||||||
|
+ ../sysdeps/unix/sysv/linux/filter-nr-syscalls.awk \
|
||||||
|
+ $(objpfx)tst-syscall-list-macros.list
|
||||||
|
+ $(AWK) -f $^ > $@-tmp
|
||||||
|
+ $(move-if-change) $@-tmp $@
|
||||||
|
+
|
||||||
|
+# SYS_* system call names. Used by the test below.
|
||||||
|
+$(objpfx)tst-syscall-list-sys.list: $(objpfx)tst-syscall-list-macros.list
|
||||||
|
+ $(AWK) '/^#define SYS_/ { print substr($$2, 5) }' $< > $@-tmp
|
||||||
|
+ $(move-if-change) $@-tmp $@
|
||||||
|
+
|
||||||
|
+tests: $(objpfx)tst-syscall-list.out
|
||||||
|
+$(objpfx)tst-syscall-list.out: \
|
||||||
|
+ ../sysdeps/unix/sysv/linux/tst-syscall-list.sh \
|
||||||
|
+ $(objpfx)tst-syscall-list-nr.list $(objpfx)tst-syscall-list-sys.list
|
||||||
|
+ $(BASH) $^ > $@
|
||||||
|
+
|
||||||
|
+endif # $(subdir) == misc
|
||||||
|
|
||||||
|
ifeq ($(subdir),time)
|
||||||
|
sysdep_headers += sys/timex.h bits/timex.h
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/filter-nr-syscalls.awk b/sysdeps/unix/sysv/linux/filter-nr-syscalls.awk
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..15b052a9
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/filter-nr-syscalls.awk
|
||||||
|
@@ -0,0 +1,35 @@
|
||||||
|
+# Filter preprocessor __NR_* macros and extract system call names.
|
||||||
|
+# Copyright (C) 2017 Free Software Foundation, Inc.
|
||||||
|
+# This file is part of the GNU C Library.
|
||||||
|
+#
|
||||||
|
+# The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
+# modify it under the terms of the GNU Lesser General Public
|
||||||
|
+# License as published by the Free Software Foundation; either
|
||||||
|
+# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+#
|
||||||
|
+# The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+# Lesser General Public License for more details.
|
||||||
|
+#
|
||||||
|
+# You should have received a copy of the GNU Lesser General Public
|
||||||
|
+# License along with the GNU C Library; if not, see
|
||||||
|
+# <http://www.gnu.org/licenses/>.
|
||||||
|
+
|
||||||
|
+# Skip reserved system calls.
|
||||||
|
+/^#define __NR_(unused|reserved)[0-9]+ / {
|
||||||
|
+ next;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+# Skip pseudo-system calls which describe ranges.
|
||||||
|
+/^#define __NR_(syscalls|arch_specific_syscall|(OABI_)?SYSCALL_BASE) / {
|
||||||
|
+ next;
|
||||||
|
+}
|
||||||
|
+/^#define __NR_(|64_|[NO]32_)Linux(_syscalls)? / {
|
||||||
|
+ next;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+# Print the remaining _NR_* macros as system call names.
|
||||||
|
+/^#define __NR_/ {
|
||||||
|
+ print substr($2, 6);
|
||||||
|
+}
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/gen-syscall-h.awk b/sysdeps/unix/sysv/linux/gen-syscall-h.awk
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..0a27b3cc
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/gen-syscall-h.awk
|
||||||
|
@@ -0,0 +1,75 @@
|
||||||
|
+# Generate SYS_* macros from a list in a text file.
|
||||||
|
+# Copyright (C) 2017 Free Software Foundation, Inc.
|
||||||
|
+# This file is part of the GNU C Library.
|
||||||
|
+#
|
||||||
|
+# The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
+# modify it under the terms of the GNU Lesser General Public
|
||||||
|
+# License as published by the Free Software Foundation; either
|
||||||
|
+# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+#
|
||||||
|
+# The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+# Lesser General Public License for more details.
|
||||||
|
+#
|
||||||
|
+# You should have received a copy of the GNU Lesser General Public
|
||||||
|
+# License along with the GNU C Library; if not, see
|
||||||
|
+# <http://www.gnu.org/licenses/>.
|
||||||
|
+
|
||||||
|
+# Emit a conditional definition for SYS_NAME.
|
||||||
|
+function emit(name) {
|
||||||
|
+ print "#ifdef __NR_" name;
|
||||||
|
+ print "# define SYS_" name " __NR_" name;
|
||||||
|
+ print "#endif";
|
||||||
|
+ print "";
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+# Bail out with an error.
|
||||||
|
+function fatal(message) {
|
||||||
|
+ print FILENAME ":" FNR ": " message > "/dev/stderr";
|
||||||
|
+ exit 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+BEGIN {
|
||||||
|
+ name = "";
|
||||||
|
+ kernel = "";
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+# Skip empty lines and comments.
|
||||||
|
+/^\s*(|#.*)$/ {
|
||||||
|
+ next;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+# Kernel version. Used for documentation purposes only.
|
||||||
|
+/^kernel [0-9.]+$/ {
|
||||||
|
+ if (kernel != "") {
|
||||||
|
+ fatal("duplicate kernel directive");
|
||||||
|
+ }
|
||||||
|
+ kernel = $2;
|
||||||
|
+ print "/* Generated at libc build time from syscall list. */";
|
||||||
|
+ print "/* The system call list corresponds to kernel " kernel ". */";
|
||||||
|
+ print "";
|
||||||
|
+ print "#ifndef _SYSCALL_H"
|
||||||
|
+ print "# error \"Never use <bits/syscall.h> directly; include <sys/syscall.h> instead.\"";
|
||||||
|
+ print "#endif";
|
||||||
|
+ print "";
|
||||||
|
+ next;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+# If there is just one word, it is a system call.
|
||||||
|
+/^[a-zA-Z_][a-zA-Z0-9_]+$/ {
|
||||||
|
+ if (kernel == "") {
|
||||||
|
+ fatal("expected kernel directive before this line");
|
||||||
|
+ }
|
||||||
|
+ if ($1 <= name) {
|
||||||
|
+ fatal("name " name " violates ordering");
|
||||||
|
+ }
|
||||||
|
+ emit($1);
|
||||||
|
+ name = $1;
|
||||||
|
+ next;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+# The rest has to be syntax errors.
|
||||||
|
+// {
|
||||||
|
+ fatal("unrecognized syntax");
|
||||||
|
+}
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/tst-syscall-list.sh b/sysdeps/unix/sysv/linux/tst-syscall-list.sh
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..f48b7cd6
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/tst-syscall-list.sh
|
||||||
|
@@ -0,0 +1,72 @@
|
||||||
|
+#!/bin/bash
|
||||||
|
+# Consistency checks for the system call list
|
||||||
|
+# Copyright (C) 2017 Free Software Foundation, Inc.
|
||||||
|
+# This file is part of the GNU C Library.
|
||||||
|
+#
|
||||||
|
+# The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
+# modify it under the terms of the GNU Lesser General Public
|
||||||
|
+# License as published by the Free Software Foundation; either
|
||||||
|
+# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+#
|
||||||
|
+# The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+# Lesser General Public License for more details.
|
||||||
|
+#
|
||||||
|
+# You should have received a copy of the GNU Lesser General Public
|
||||||
|
+# License along with the GNU C Library; if not, see
|
||||||
|
+# <http://www.gnu.org/licenses/>.
|
||||||
|
+
|
||||||
|
+export LC_ALL=C
|
||||||
|
+set -e
|
||||||
|
+set -o pipefail
|
||||||
|
+
|
||||||
|
+if test $# != 2 ; then
|
||||||
|
+ echo "error: wrong number of arguments: $#"
|
||||||
|
+ exit 1
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+list_nr="$1"
|
||||||
|
+list_sys="$2"
|
||||||
|
+
|
||||||
|
+errors=0
|
||||||
|
+
|
||||||
|
+# Use getpid as a system call which is expected to be always defined.
|
||||||
|
+# alpha uses getxpid instead, so it is permitted as an alternative.
|
||||||
|
+if ! grep -E -q '^getx?pid$' -- "$list_nr" ; then
|
||||||
|
+ echo "error: __NR_getpid not defined"
|
||||||
|
+ errors=1
|
||||||
|
+fi
|
||||||
|
+if ! grep -E -q '^getx?pid$' -- "$list_sys" ; then
|
||||||
|
+ echo "error: SYS_getpid not defined"
|
||||||
|
+ errors=1
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+comm_1="$(mktemp)"
|
||||||
|
+comm_2="$(mktemp)"
|
||||||
|
+comm_result="$(mktemp)"
|
||||||
|
+cleanup () {
|
||||||
|
+ rm -f -- "$comm_1" "$comm_2" "$comm_result"
|
||||||
|
+}
|
||||||
|
+trap cleanup 0
|
||||||
|
+
|
||||||
|
+sort -o "$comm_1" -- "$list_nr"
|
||||||
|
+sort -o "$comm_2" -- "$list_sys"
|
||||||
|
+
|
||||||
|
+# Check for missing SYS_* macros.
|
||||||
|
+comm --check-order -2 -3 -- "$comm_1" "$comm_2" > "$comm_result"
|
||||||
|
+if test -s "$comm_result"; then
|
||||||
|
+ echo "error: These system calls need to be added to syscall-names.list:"
|
||||||
|
+ cat -- "$comm_result"
|
||||||
|
+ errors=1
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+# Check for additional SYS_* macros.
|
||||||
|
+comm --check-order -1 -3 -- "$comm_1" "$comm_2" > "$comm_result"
|
||||||
|
+if test -s "$comm_result"; then
|
||||||
|
+ echo "error: The following system calls have unexpected SYS_* macros:"
|
||||||
|
+ cat -- "$comm_result"
|
||||||
|
+ errors=1
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+exit "$errors"
|
@ -1,6 +1,6 @@
|
|||||||
%define glibcsrcdir glibc-2.26-159-g80f91666fe
|
%define glibcsrcdir glibc-2.26-159-g80f91666fe
|
||||||
%define glibcversion 2.26.90
|
%define glibcversion 2.26.90
|
||||||
%define glibcrelease 9%{?dist}
|
%define glibcrelease 10%{?dist}
|
||||||
# Pre-release tarballs are pulled in from git using a command that is
|
# Pre-release tarballs are pulled in from git using a command that is
|
||||||
# effectively:
|
# effectively:
|
||||||
#
|
#
|
||||||
@ -261,6 +261,8 @@ Patch2037: glibc-rh1315108.patch
|
|||||||
Patch2112: glibc-rh1315476-2.patch
|
Patch2112: glibc-rh1315476-2.patch
|
||||||
|
|
||||||
Patch2114: glibc-rh1470060.patch
|
Patch2114: glibc-rh1470060.patch
|
||||||
|
Patch2115: glibc-rh1484729.patch
|
||||||
|
Patch2116: glibc-rh1484729-syscall-names.patch
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# End of glibc patches.
|
# End of glibc patches.
|
||||||
@ -749,6 +751,8 @@ microbenchmark tests on the system.
|
|||||||
%patch2037 -p1
|
%patch2037 -p1
|
||||||
%patch2112 -p1
|
%patch2112 -p1
|
||||||
%patch2114 -p1
|
%patch2114 -p1
|
||||||
|
%patch2115 -p1
|
||||||
|
%patch2116 -p1
|
||||||
%patch0061 -p1
|
%patch0061 -p1
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
@ -2081,6 +2085,9 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Aug 24 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-10
|
||||||
|
- Use an architecture-independent system call list (#1484729)
|
||||||
|
|
||||||
* Tue Aug 22 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-9
|
* Tue Aug 22 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-9
|
||||||
- Auto-sync with upstream master,
|
- Auto-sync with upstream master,
|
||||||
commit 80f91666fed71fa3dd5eb5618739147cc731bc89.
|
commit 80f91666fed71fa3dd5eb5618739147cc731bc89.
|
||||||
|
Loading…
Reference in New Issue
Block a user