glibc/sysdeps/unix/sysv/linux/x86_64
H.J. Lu 2ad5d0845d Add SYSCALL_ULONG_ARG_[12] to pass long to syscall [BZ #25810]
X32 has 32-bit long and pointer with 64-bit off_t.  Since x32 psABI
requires that pointers passed in registers must be zero-extended to
64bit, x32 can share many syscall interfaces with LP64.  When a LP64
syscall with long and unsigned long int arguments is used for x32, these
arguments must be properly extended to 64-bit.  Otherwise if the upper
32 bits of the register have undefined value, such a syscall will be
rejected by kernel.

For syscalls implemented in assembly codes, 'U' is added to syscall
signature key letters for unsigned long, which is zero-extended to
64-bit types.  SYSCALL_ULONG_ARG_1 and SYSCALL_ULONG_ARG_2 are passed
to syscall-template.S for the first and the second unsigned long int
arguments if PSEUDOS_HAVE_ULONG_INDICES is defined.  They are used by
x32 to zero-extend 32-bit arguments to 64 bits.

Tested on i386, x86-64 and x32 as well as with build-many-glibcs.py.
2020-04-29 05:35:34 -07:00
..
64 nptl: Move pthread_sigmask implementation to libc 2020-04-21 14:01:58 -03:00
x32 Add SYSCALL_ULONG_ARG_[12] to pass long to syscall [BZ #25810] 2020-04-29 05:35:34 -07:00
Implies
Makefile
Versions
____longjmp_chk.S
__start_context.S
brk.c
clone.S
compat-timer.h
configure
configure.ac
dl-cache.h
dl-procinfo.c
dl-procinfo.h
getcontext.S
kernel-features.h
kernel_stat.h
ldconfig.h
ldd-rewrite.sed
libmvec.abilist
makecontext.c
pthread_setaffinity.c
readelflib.c
register-dump.h
sched_setaffinity.c
setcontext.S
sigaction.c
sigaltstack-offsets.sym
sigcontextinfo.h
swapcontext.S
syscall.S
syscalls.list
sysdep.S
sysdep.h Add SYSCALL_ULONG_ARG_[12] to pass long to syscall [BZ #25810] 2020-04-29 05:35:34 -07:00
timer_create.c
timer_delete.c
timer_getoverr.c
timer_gettime.c
timer_settime.c
ucontext_i.sym
vfork.S