mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +03:00 
			
		
		
		
	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
 |