about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2014-09-30 14:32:08 +0000
committerJoseph Myers <joseph@codesourcery.com>2014-09-30 14:32:08 +0000
commit754a15c61cd6834685386a134d0a0fed5f3ac4c1 (patch)
tree4b051a346648b6b62bc82ebcf1b0dfd3c8651eda
parentdc6fe23ba65714781a3d26270c132c0ca0ca5beb (diff)
downloadglibc-754a15c61cd6834685386a134d0a0fed5f3ac4c1.tar.gz
glibc-754a15c61cd6834685386a134d0a0fed5f3ac4c1.tar.xz
glibc-754a15c61cd6834685386a134d0a0fed5f3ac4c1.zip
Move some *at definitions to syscalls.list (bug 14138).
Continuing the move of syscall definitions to syscalls.list, where the
removal of support for old kernel versions has made this possible,
this patch moves definitions of various *at functions in
sysdeps/unix/sysv/linux/.

These particular moves are straightforward: there are no #includes of
these source files, no special architecture-specific versions, no
special symbol version handling and no aliases.  Each source file can
be replaced by a single line in sysdeps/unix/sysv/linux/syscalls.list.

Tested for x86_64.

	[BZ #14138]
	* sysdeps/unix/sysv/linux/syscalls.list (fchownat): New syscall.
	(linkat): Likewise.
	(mkdirat): Likewise.
	(readlinkat): Likewise.
	(renameat): Likewise.
	(symlinkat): Likewise.
	(unlinkat): Likewise.
	* sysdeps/unix/sysv/linux/fchownat.c: Remove file.
	* sysdeps/unix/sysv/linux/linkat.c: Likewise.
	* sysdeps/unix/sysv/linux/mkdirat.c: Likewise.
	* sysdeps/unix/sysv/linux/readlinkat.c: Likewise.
	* sysdeps/unix/sysv/linux/renameat.c: Likewise.
	* sysdeps/unix/sysv/linux/symlinkat.c: Likewise.
	* sysdeps/unix/sysv/linux/unlinkat.c: Likewise.
-rw-r--r--ChangeLog18
-rw-r--r--sysdeps/unix/sysv/linux/fchownat.c41
-rw-r--r--sysdeps/unix/sysv/linux/linkat.c39
-rw-r--r--sysdeps/unix/sysv/linux/mkdirat.c38
-rw-r--r--sysdeps/unix/sysv/linux/readlinkat.c41
-rw-r--r--sysdeps/unix/sysv/linux/renameat.c36
-rw-r--r--sysdeps/unix/sysv/linux/symlinkat.c38
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list8
-rw-r--r--sysdeps/unix/sysv/linux/unlinkat.c39
9 files changed, 26 insertions, 272 deletions
diff --git a/ChangeLog b/ChangeLog
index d7580c1489..6ea4751067 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2014-09-30  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #14138]
+	* sysdeps/unix/sysv/linux/syscalls.list (fchownat): New syscall.
+	(linkat): Likewise.
+	(mkdirat): Likewise.
+	(readlinkat): Likewise.
+	(renameat): Likewise.
+	(symlinkat): Likewise.
+	(unlinkat): Likewise.
+	* sysdeps/unix/sysv/linux/fchownat.c: Remove file.
+	* sysdeps/unix/sysv/linux/linkat.c: Likewise.
+	* sysdeps/unix/sysv/linux/mkdirat.c: Likewise.
+	* sysdeps/unix/sysv/linux/readlinkat.c: Likewise.
+	* sysdeps/unix/sysv/linux/renameat.c: Likewise.
+	* sysdeps/unix/sysv/linux/symlinkat.c: Likewise.
+	* sysdeps/unix/sysv/linux/unlinkat.c: Likewise.
+
 2014-09-30  Will Newton  <will.newton@linaro.org>
 
 	* math/math.h: Define long double math functions if
diff --git a/sysdeps/unix/sysv/linux/fchownat.c b/sysdeps/unix/sysv/linux/fchownat.c
deleted file mode 100644
index fae1256af7..0000000000
--- a/sysdeps/unix/sysv/linux/fchownat.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright (C) 2005-2014 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 <errno.h>
-#include <fcntl.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <alloca.h>
-#include <sysdep.h>
-
-
-/* Consider moving to syscalls.list.  */
-
-/* Change the owner and group of FILE.  */
-int
-fchownat (fd, file, owner, group, flag)
-     int fd;
-     const char *file;
-     uid_t owner;
-     gid_t group;
-     int flag;
-{
-  return INLINE_SYSCALL (fchownat, 5, fd, file, owner, group, flag);
-}
diff --git a/sysdeps/unix/sysv/linux/linkat.c b/sysdeps/unix/sysv/linux/linkat.c
deleted file mode 100644
index e150486a30..0000000000
--- a/sysdeps/unix/sysv/linux/linkat.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (C) 2005-2014 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 <errno.h>
-#include <fcntl.h>
-#include <string.h>
-#include <stdio.h>
-#include <sysdep.h>
-#include <unistd.h>
-
-
-/* Consider moving to syscalls.list.  */
-
-/* Make a link to FROM named TO but relative paths in TO and FROM are
-   interpreted relative to FROMFD and TOFD respectively.  */
-int
-linkat (fromfd, from, tofd, to, flags)
-     int fromfd;
-     const char *from;
-     int tofd;
-     const char *to;
-     int flags;
-{
-  return INLINE_SYSCALL (linkat, 5, fromfd, from, tofd, to, flags);
-}
diff --git a/sysdeps/unix/sysv/linux/mkdirat.c b/sysdeps/unix/sysv/linux/mkdirat.c
deleted file mode 100644
index 9de1058b3f..0000000000
--- a/sysdeps/unix/sysv/linux/mkdirat.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (C) 2005-2014 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 <errno.h>
-#include <fcntl.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sysdep-cancel.h>
-
-
-/* Consider moving to syscalls.list.  */
-
-/* Create a new directory with permission bits MODE.  But interpret
-   relative PATH names relative to the directory associated with FD.  */
-int
-mkdirat (fd, file, mode)
-     int fd;
-     const char *file;
-     mode_t mode;
-{
-  return INLINE_SYSCALL (mkdirat, 3, fd, file, mode);
-}
diff --git a/sysdeps/unix/sysv/linux/readlinkat.c b/sysdeps/unix/sysv/linux/readlinkat.c
deleted file mode 100644
index 8755fc8fe0..0000000000
--- a/sysdeps/unix/sysv/linux/readlinkat.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright (C) 2005-2014 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 <errno.h>
-#include <fcntl.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sysdep.h>
-#include <unistd.h>
-
-
-/* Consider moving to syscalls.list.  */
-
-/* Read the contents of the symbolic link PATH relative to FD into no
-   more than LEN bytes of BUF.  */
-ssize_t
-readlinkat (fd, path, buf, len)
-     int fd;
-     const char *path;
-     char *buf;
-     size_t len;
-{
-  return INLINE_SYSCALL (readlinkat, 4, fd, path, buf, len);
-}
-libc_hidden_def (readlinkat)
diff --git a/sysdeps/unix/sysv/linux/renameat.c b/sysdeps/unix/sysv/linux/renameat.c
deleted file mode 100644
index 6f2e148fa4..0000000000
--- a/sysdeps/unix/sysv/linux/renameat.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (C) 2005-2014 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 <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <string.h>
-#include <sysdep.h>
-
-
-/* Consider moving to syscalls.list.  */
-
-/* Rename the file OLD relative to OLDFD to NEW relative to NEWFD.  */
-int
-renameat (oldfd, old, newfd, new)
-     int oldfd;
-     const char *old;
-     int newfd;
-     const char *new;
-{
-  return INLINE_SYSCALL (renameat, 4, oldfd, old, newfd, new);
-}
diff --git a/sysdeps/unix/sysv/linux/symlinkat.c b/sysdeps/unix/sysv/linux/symlinkat.c
deleted file mode 100644
index 1166525cba..0000000000
--- a/sysdeps/unix/sysv/linux/symlinkat.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (C) 2005-2014 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 <errno.h>
-#include <fcntl.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sysdep.h>
-#include <unistd.h>
-
-
-/* Consider moving to syscalls.list.  */
-
-/* Make a symbolic link to FROM named TO relative to TOFD.  */
-int
-symlinkat (from, tofd, to)
-     const char *from;
-     int tofd;
-     const char *to;
-{
-  return INLINE_SYSCALL (symlinkat, 3, from, tofd, to);
-}
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index d639d63cf9..5e3968a28b 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -84,6 +84,14 @@ wait4		-	wait4		i:iWiP	__wait4		wait4
 
 chown		-	chown		i:sii	__libc_chown	__chown chown
 
+fchownat	-	fchownat	i:isiii	fchownat
+linkat		-	linkat		i:isisi	linkat
+mkdirat		-	mkdirat		i:isi	mkdirat
+readlinkat	-	readlinkat	i:issi	readlinkat
+renameat	-	renameat	i:isis	renameat
+symlinkat	-	symlinkat	i:sis	symlinkat
+unlinkat	-	unlinkat	i:isi	unlinkat
+
 setxattr	-	setxattr	i:sspii	setxattr
 lsetxattr	-	lsetxattr	i:sspii	lsetxattr
 fsetxattr	-	fsetxattr	i:ispii	fsetxattr
diff --git a/sysdeps/unix/sysv/linux/unlinkat.c b/sysdeps/unix/sysv/linux/unlinkat.c
deleted file mode 100644
index 2d5bd74170..0000000000
--- a/sysdeps/unix/sysv/linux/unlinkat.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* unlinkat -- Remove a link by relative name.
-   Copyright (C) 2005-2014 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 <errno.h>
-#include <fcntl.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sysdep.h>
-#include <unistd.h>
-
-
-/* Consider moving to syscalls.list.  */
-
-/* Remove the link named NAME.  */
-int
-unlinkat (fd, file, flag)
-     int fd;
-     const char *file;
-     int flag;
-{
-  return INLINE_SYSCALL (unlinkat, 3, fd, file, flag);
-}