5163b4b76f
The handling of negative offsets in MIPS mmap is inconsistent with other architectures, as shown by failure of the test posix/tst-mmap-offset for o32 and n32. The MIPS mmap syscall uses a signed argument and does a signed arithmetic shift on it, whereas the glibc semantics expected by that test are for the offset to be considered as a large positive offset. This patch makes MIPS consistent with other architectures as far as possible by using the mmap2 syscall on o32 (#including the generic implementation), and making mmap not an alias for mmap64 for n32, with a custom implementation for n32 that zero-extends the offset argument to 64-bit before calling the mmap syscall. Tested for MIPS64 (o32, n32, n64). [BZ #19550] * sysdeps/unix/sysv/linux/mips/mips32/mmap.c: New file. * sysdeps/unix/sysv/linux/mips/mips64/mmap64.c: Move to .... * sysdeps/unix/sysv/linux/mips/mips64/n64/mmap64.c: ... here. * sysdeps/unix/sysv/linux/mips/mips64/n32/mmap.c: New file. * sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list (mmap64): New syscall entry. * sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list (mmap): New syscall entry. * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (mmap): Remove syscall entry.
19 lines
735 B
Plaintext
19 lines
735 B
Plaintext
# File name Caller Syscall name Args Strong name Weak names
|
|
|
|
lseek - lseek i:iii __libc_lseek __lseek lseek __llseek llseek __libc_lseek64 __lseek64 lseek64
|
|
|
|
ftruncate - ftruncate i:ii __ftruncate ftruncate ftruncate64 __ftruncate64
|
|
truncate - truncate i:si truncate truncate64
|
|
|
|
# Semaphore and shm system calls. msgctl, shmctl, and semctl have C
|
|
# wrappers (to set __IPC_64).
|
|
msgget - msgget i:ii __msgget msgget
|
|
msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv
|
|
msgsnd - msgsnd Ci:ibni __msgsnd msgsnd
|
|
shmat - shmat i:ipi __shmat shmat
|
|
shmdt - shmdt i:s __shmdt shmdt
|
|
shmget - shmget i:iii __shmget shmget
|
|
semop - semop i:ipi __semop semop
|
|
semtimedop - semtimedop i:ipip semtimedop
|
|
semget - semget i:iii __semget semget
|