about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog14
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/mmap.c1
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n32/mmap.c35
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list2
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n64/mmap64.c (renamed from sysdeps/unix/sysv/linux/mips/mips64/mmap64.c)0
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list2
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/syscalls.list2
7 files changed, 54 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index a0fd225cc6..b1e619148e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2016-02-01  Joseph Myers  <joseph@codesourcery.com>
+
+	[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.
+
 2016-01-27  Paul Eggert  <eggert@cs.ucla.edu>
 
 	[BZ #18240]
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/mmap.c b/sysdeps/unix/sysv/linux/mips/mips32/mmap.c
new file mode 100644
index 0000000000..f30b1da58e
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips32/mmap.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c>
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/mmap.c b/sysdeps/unix/sysv/linux/mips/mips64/n32/mmap.c
new file mode 100644
index 0000000000..7afe776c7d
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/mmap.c
@@ -0,0 +1,35 @@
+/* mmap for MIPS n32.
+   Copyright (C) 2016 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/>.  */
+
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <errno.h>
+#include <stdint.h>
+#include <sysdep.h>
+
+__ptr_t
+__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
+{
+  /* To handle negative offsets consistently with other architectures,
+     the offset must be zero-extended to 64-bit.  */
+  uint64_t offset_adj = (uint64_t) (uint32_t) offset;
+  return (__ptr_t) INLINE_SYSCALL (mmap, 6, addr, len, prot, flags, fd,
+				   offset_adj);
+}
+
+weak_alias (__mmap, mmap)
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list b/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list
index 584ad1fcba..f55a94ac89 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list
@@ -1,5 +1,7 @@
 # File name	Caller	Syscall name	# args	Strong name	Weak names
 
+mmap64		-	mmap		b:aniiii __mmap64	mmap64
+
 readahead	-	readahead	i:iii	__readahead	readahead
 sync_file_range	-	sync_file_range	Ci:iiii	sync_file_range
 
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/mmap64.c b/sysdeps/unix/sysv/linux/mips/mips64/n64/mmap64.c
index 0dbd384a6a..0dbd384a6a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/mmap64.c
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/mmap64.c
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list b/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list
index b23a2a1d1c..890a74494a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list
@@ -1,5 +1,7 @@
 # File name	Caller	Syscall name	# args	Strong name	Weak names
 
+mmap		-	mmap		b:aniiii __mmap		mmap __mmap64 mmap64
+
 sync_file_range	-	sync_file_range	Ci:iiii	sync_file_range
 
 prlimit		EXTRA	prlimit64	i:iipp	prlimit		prlimit64
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list b/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list
index 6c80e27f75..66cc687abb 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list
@@ -2,8 +2,6 @@
 
 lseek		-	lseek		i:iii	__libc_lseek	__lseek lseek __llseek llseek __libc_lseek64 __lseek64 lseek64
 
-mmap		-	mmap		b:aniiii __mmap		mmap __mmap64 mmap64
-
 ftruncate	-	ftruncate	i:ii	__ftruncate	ftruncate ftruncate64 __ftruncate64
 truncate	-	truncate	i:si	truncate	truncate64