From patchwork Wed Nov 18 14:02:36 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 546017 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 36BAB141429 for ; Thu, 19 Nov 2015 01:03:35 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b=XsLMtFJT; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references; q=dns; s=default; b=SxQZPmaokjwdjluwBeNKX9k9zVtr9IK A5495hxd/jkYuvzUm6xOQ//7nsOTKVAwxUKum1R3IFd2bftFsGLNY63I6Mi42AZZ tqvclMCeIvROelU/K7T4JGzIf3SrCOC/H4slTcQfhONXdcX4AV+OHP+FJZbLZcIf +0aXgCJbdlSU= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references; s=default; bh=Wv3Hdewd2VlJeSbtQTzGTGbxkDY=; b=XsLMt FJTIA9lS9Y2WByZRwT0bhu+UxsnrqxZbyAsbSIlPaKjgAMfaYs+v8/9aBQgeAHYR ZZX9GZfdOvX3GboS3btADNFDqwqErJSHxVKSjkCxhzeb62/m4XlVEL8tZd+pcRi4 yH2Z64Fgq5M5Zz0Iehlc2S51dnIyBtibZecDUk= Received: (qmail 28674 invoked by alias); 18 Nov 2015 14:03:06 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 28560 invoked by uid 89); 18 Nov 2015 14:03:06 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-yk0-f172.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=XNslncviqeIGD17+/hx18peU3k5kXPszMKHd5J6n8jI=; b=SNzfPR3csh2Ly3OzuG5QRB6ZJqOP4euOCVIIQCizwtKb3Yehu6K9oRWFzYUzBev5ud z2cO5+YEDYmjGcPAFVVTrEWYdSqgQhGbIp65a5FlVhvpsWMf8OOoMwYAit7XhSiTB7s3 iFPoxi8/QwCmzCyUKp7OEvysa0jJWwLZl1CaxzdrHtJ3A6NIBS3NGeZCWj/FcBegeitX cw/3gROuk4/jleROdm3KxEykNa4F7kYBH+EUeKR50ntQ7ZgNH8/A1tJ4CWnmqYVgt2J9 AlO76M6RcSOAZSf6aFLtvGyzOdJqfRWReHuBxO71mq990fyctOyk5BJltwbJ5eLFLdpu lcFQ== X-Gm-Message-State: ALoCoQm08ugsJWdqWKxjQLev3cm0l4MIWT2spgPJeERt/BMNFButOptQtjVYJVgg6VxHoxc9yPJr X-Received: by 10.13.213.131 with SMTP id x125mr1812933ywd.229.1447855370302; Wed, 18 Nov 2015 06:02:50 -0800 (PST) From: Adhemerval Zanella To: libc-alpha@sourceware.org Cc: Adhemerval Zanella Subject: [PATCH 4/4] Consolidate pwrite/pwrite64 implementations Date: Wed, 18 Nov 2015 12:02:36 -0200 Message-Id: <1447855356-4140-5-git-send-email-adhemerval.zanella@linaro.org> In-Reply-To: <1447855356-4140-1-git-send-email-adhemerval.zanella@linaro.org> References: <1447855356-4140-1-git-send-email-adhemerval.zanella@linaro.org> From: Adhemerval Zanella This patch consolidates all the pwrite/pwrite64 implementation for Linux in only one (sysdeps/unix/sysv/linux/pwrite{64}.c). It also removes the syscall from the auto-generation using assembly macros. For pwrite{64} offset argument placement the new SYSCALL_LL{64} macro is used. For pwrite ports that do not define __NR_pwrite will use __NR_pwrite64 and for pwrite64 ports that dot define __NR_pwrite64 will use __NR_pwrite for the syscall. Checked on x86_64, x32, i386, aarch64, and ppc64le. * sysdeps/unix/sysv/linux/arm/pwrite.c: Remove file. * sysdeps/unix/sysv/linux/arm/pwrite64.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c: Likewise. * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c: Likewise. * sysdeps/unix/sysv/linux/sh/pwrite.c: Likewise. * sysdeps/unix/sysv/linux/sh/pwrite64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/pwrite64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list (prite): Remove syscalls generation. * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h [__NR_pwrite64] (__NR_write): Remove define. * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h [__NR_pwrite64] (__NR_write): Remove define. * sysdeps/unix/sysv/linux/pwrite.c [__NR_pwrite64] (__NR_pwrite): Remove define. (__libc_pwrite): Use SYSCALL_OFF macro on offset argument. * sysdeps/unix/sysv/linux/pwrite64.c [__NR_pwrite64] (__NR_pwrite): Remove define. (__libc_pwrite64): Use SYSCALL_OFF64 macro on offset argument. --- sysdeps/unix/sysv/linux/arm/pwrite.c | 36 --------------- sysdeps/unix/sysv/linux/arm/pwrite64.c | 38 --------------- .../unix/sysv/linux/generic/wordsize-32/pwrite.c | 36 --------------- .../unix/sysv/linux/generic/wordsize-32/pwrite64.c | 35 -------------- sysdeps/unix/sysv/linux/mips/pwrite.c | 54 ---------------------- sysdeps/unix/sysv/linux/mips/pwrite64.c | 51 -------------------- sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c | 35 -------------- .../unix/sysv/linux/powerpc/powerpc32/pwrite64.c | 36 --------------- sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h | 11 ----- sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h | 11 ----- sysdeps/unix/sysv/linux/pwrite.c | 20 ++------ sysdeps/unix/sysv/linux/pwrite64.c | 17 ++----- sysdeps/unix/sysv/linux/sh/pwrite.c | 43 ----------------- sysdeps/unix/sysv/linux/sh/pwrite64.c | 44 ------------------ sysdeps/unix/sysv/linux/wordsize-64/pwrite64.c | 1 - sysdeps/unix/sysv/linux/wordsize-64/syscalls.list | 1 - 17 files changed, 31 insertions(+), 462 deletions(-) delete mode 100644 sysdeps/unix/sysv/linux/arm/pwrite.c delete mode 100644 sysdeps/unix/sysv/linux/arm/pwrite64.c delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c delete mode 100644 sysdeps/unix/sysv/linux/mips/pwrite.c delete mode 100644 sysdeps/unix/sysv/linux/mips/pwrite64.c delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c delete mode 100644 sysdeps/unix/sysv/linux/sh/pwrite.c delete mode 100644 sysdeps/unix/sysv/linux/sh/pwrite64.c delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/pwrite64.c diff --git a/sysdeps/unix/sysv/linux/arm/pwrite.c b/sysdeps/unix/sysv/linux/arm/pwrite.c deleted file mode 100644 index e22e112..0000000 --- a/sysdeps/unix/sysv/linux/arm/pwrite.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 1997-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - 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 - . */ - -#include -#include -#include - -#include -#include - -ssize_t -__libc_pwrite (int fd, const void *buf, size_t count, off_t offset) -{ - /* In the ARM EABI, 64-bit values are aligned to even/odd register - pairs for syscalls. */ - return SYSCALL_CANCEL (pwrite64, fd, buf, count, 0, - __LONG_LONG_PAIR (offset >> 31, offset)); -} - -strong_alias (__libc_pwrite, __pwrite) -weak_alias (__libc_pwrite, pwrite) diff --git a/sysdeps/unix/sysv/linux/arm/pwrite64.c b/sysdeps/unix/sysv/linux/arm/pwrite64.c deleted file mode 100644 index b63fbc8..0000000 --- a/sysdeps/unix/sysv/linux/arm/pwrite64.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 1997-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - 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 - . */ - -#include -#include -#include - -#include -#include - -ssize_t -__libc_pwrite64 (int fd, const void *buf, size_t count, off64_t offset) -{ - /* In the ARM EABI, 64-bit values are aligned to even/odd register - pairs for syscalls. */ - return SYSCALL_CANCEL (pwrite64, fd, buf, count, 0, - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset & 0xffffffff))); -} - -weak_alias (__libc_pwrite64, __pwrite64) -libc_hidden_weak (__pwrite64) -weak_alias (__libc_pwrite64, pwrite64) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c deleted file mode 100644 index 2f0f7a1..0000000 --- a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 2011-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Ulrich Drepper , 1997. - - 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 - . */ - -#include -#include -#include -#include - -#include -#include - -ssize_t -__libc_pwrite (int fd, const void *buf, size_t count, off_t offset) -{ - assert (sizeof (offset) == 4); - return SYSCALL_CANCEL (pwrite64, fd, buf, count, __ALIGNMENT_ARG - __LONG_LONG_PAIR (offset >> 31, offset)); -} -strong_alias (__libc_pwrite, __pwrite) -weak_alias (__libc_pwrite, pwrite) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c deleted file mode 100644 index f222016..0000000 --- a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (C) 2011-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Ulrich Drepper , 1997. - - 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 - . */ - -#include -#include -#include - -#include -#include - -ssize_t -__libc_pwrite64 (int fd, const void *buf, size_t count, off64_t offset) -{ - return SYSCALL_CANCEL (pwrite64, fd, buf, count, __ALIGNMENT_ARG - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset & 0xffffffff))); -} -weak_alias (__libc_pwrite64, __pwrite64) -libc_hidden_weak (__pwrite64) weak_alias (__libc_pwrite64, pwrite64) diff --git a/sysdeps/unix/sysv/linux/mips/pwrite.c b/sysdeps/unix/sysv/linux/mips/pwrite.c deleted file mode 100644 index f4d71d4..0000000 --- a/sysdeps/unix/sysv/linux/mips/pwrite.c +++ /dev/null @@ -1,54 +0,0 @@ -/* Copyright (C) 1997-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - 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 - . */ - -#include -#include -#ifndef NO_SGIDEFS_H -#include -#endif -#include -#include - -#include -#include - -#ifdef __NR_pwrite64 /* Newer kernels renamed but it's the same. */ -# ifdef __NR_pwrite -# error "__NR_pwrite and __NR_pwrite64 both defined???" -# endif -# define __NR_pwrite __NR_pwrite64 -#endif - - -ssize_t -__libc_pwrite (int fd, const void *buf, size_t count, off_t offset) -{ -#if _MIPS_SIM != _ABI64 - assert (sizeof (offset) == 4); -#endif - -#if _MIPS_SIM == _ABIN32 || _MIPS_SIM == _ABI64 - return SYSCALL_CANCEL (pwrite, fd, buf, count, offset); -#else - return SYSCALL_CANCEL (pwrite, fd, buf, count, 0, - __LONG_LONG_PAIR (offset >> 31, offset)); -#endif -} - -strong_alias (__libc_pwrite, __pwrite) -weak_alias (__libc_pwrite, pwrite) diff --git a/sysdeps/unix/sysv/linux/mips/pwrite64.c b/sysdeps/unix/sysv/linux/mips/pwrite64.c deleted file mode 100644 index ac0dc40..0000000 --- a/sysdeps/unix/sysv/linux/mips/pwrite64.c +++ /dev/null @@ -1,51 +0,0 @@ -/* Copyright (C) 1997-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ralf Baechle , 1998. - - 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 - . */ - -#include -#ifndef NO_SGIDEFS_H -#include -#endif -#include -#include - -#include -#include - -#ifdef __NR_pwrite64 /* Newer kernels renamed but it's the same. */ -# ifdef __NR_pwrite -# error "__NR_pwrite and __NR_pwrite64 both defined???" -# endif -# define __NR_pwrite __NR_pwrite64 -#endif - - -ssize_t -__libc_pwrite64 (int fd, const void *buf, size_t count, off64_t offset) -{ -#if _MIPS_SIM == _ABIN32 || _MIPS_SIM == _ABI64 - return SYSCALL_CANCEL (pwrite, fd, buf, count, offset); -#else - return SYSCALL_CANCEL (pwrite, fd, buf, count, 0, - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset & 0xffffffff))); -#endif -} - -weak_alias (__libc_pwrite64, __pwrite64) -libc_hidden_weak (__pwrite64) -weak_alias (__libc_pwrite64, pwrite64) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c deleted file mode 100644 index fc822d7..0000000 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (C) 1997-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - 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 - . */ - -#include -#include -#include - -#include -#include - - -ssize_t -__libc_pwrite (int fd, const void *buf, size_t count, off_t offset) -{ - /* On PPC32 64bit values are aligned in odd/even register pairs. */ - return SYSCALL_CANCEL (pwrite, fd, buf, count, 0, offset >> 31, offset); -} - -strong_alias (__libc_pwrite, __pwrite) -weak_alias (__libc_pwrite, pwrite) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c deleted file mode 100644 index dbeaed8..0000000 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 1997-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - 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 - . */ - -#include -#include - -#include -#include - - -ssize_t -__libc_pwrite64 (int fd, const void *buf, size_t count, off64_t offset) -{ - /* On PPC32 64bit values are aligned in odd/even register pairs. */ - return SYSCALL_CANCEL (pwrite, fd, buf, count, 0, (long) (offset >> 32), - (long) offset); -} - -weak_alias (__libc_pwrite64, __pwrite64) -libc_hidden_weak (__pwrite64) -weak_alias (__libc_pwrite64, pwrite64) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h index 910841e..f9f10f0 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h @@ -23,17 +23,6 @@ #include #include -/* Some systen calls got renamed over time, but retained the same semantics. - Handle them here so they can be catched by both C and assembler stubs in - glibc. */ - -#ifdef __NR_pwrite64 -# ifdef __NR_pwrite -# error "__NR_pwrite and __NR_pwrite64 both defined???" -# endif -# define __NR_pwrite __NR_pwrite64 -#endif - /* For Linux we can use the system call table in the header file /usr/include/asm/unistd.h of the kernel. But these symbols do not follow the SYS_* syntax diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h index 6299d0d..dc61c21 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h @@ -30,17 +30,6 @@ #include #endif -/* Some systen calls got renamed over time, but retained the same semantics. - Handle them here so they can be catched by both C and assembler stubs in - glibc. */ - -#ifdef __NR_pwrite64 -# ifdef __NR_pwrite -# error "__NR_pwrite and __NR_pwrite64 both defined???" -# endif -# define __NR_pwrite __NR_pwrite64 -#endif - /* For Linux we can use the system call table in the header file /usr/include/asm/unistd.h of the kernel. But these symbols do not follow the SYS_* syntax diff --git a/sysdeps/unix/sysv/linux/pwrite.c b/sysdeps/unix/sysv/linux/pwrite.c index b77985d..0ec17d8 100644 --- a/sysdeps/unix/sysv/linux/pwrite.c +++ b/sysdeps/unix/sysv/linux/pwrite.c @@ -16,32 +16,18 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include #include - #include -#include -#ifdef __NR_pwrite64 /* Newer kernels renamed but it's the same. */ -# ifdef __NR_pwrite -# error "__NR_pwrite and __NR_pwrite64 both defined???" -# endif +#ifndef __NR_pwrite # define __NR_pwrite __NR_pwrite64 #endif - ssize_t __libc_pwrite (int fd, const void *buf, size_t count, off_t offset) { - ssize_t result; - - assert (sizeof (offset) == 4); - result = SYSCALL_CANCEL (pwrite, fd, buf, count, - __LONG_LONG_PAIR (offset >> 31, offset)); - - return result; + return SYSCALL_CANCEL (pwrite, fd, buf, count, + __ALIGNMENT_ARG SYSCALL_LL (offset)); } strong_alias (__libc_pwrite, __pwrite) diff --git a/sysdeps/unix/sysv/linux/pwrite64.c b/sysdeps/unix/sysv/linux/pwrite64.c index a5d0fb7..6f59cc3 100644 --- a/sysdeps/unix/sysv/linux/pwrite64.c +++ b/sysdeps/unix/sysv/linux/pwrite64.c @@ -16,27 +16,18 @@ License along with the GNU C Library; if not, see . */ -#include -#include #include - #include -#include -#ifdef __NR_pwrite64 /* Newer kernels renamed but it's the same. */ -# ifdef __NR_pwrite -# error "__NR_pwrite and __NR_pwrite64 both defined???" -# endif -# define __NR_pwrite __NR_pwrite64 +#ifndef __NR_pwrite64 +# define __NR_pwrite64 __NR_pwrite #endif - ssize_t __libc_pwrite64 (int fd, const void *buf, size_t count, off64_t offset) { - return SYSCALL_CANCEL (pwrite, fd, buf, count, - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset & 0xffffffff))); + return SYSCALL_CANCEL (pwrite64, fd, buf, count, + __ALIGNMENT_ARG SYSCALL_LL64 (offset)); } weak_alias (__libc_pwrite64, __pwrite64) libc_hidden_weak (__pwrite64) diff --git a/sysdeps/unix/sysv/linux/sh/pwrite.c b/sysdeps/unix/sysv/linux/sh/pwrite.c deleted file mode 100644 index fcbb7fc..0000000 --- a/sysdeps/unix/sysv/linux/sh/pwrite.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright (C) 1997-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - 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 - . */ - -#include -#include -#include -#include - -#include -#include - -#ifdef __NR_pwrite64 /* Newer kernels renamed but it's the same. */ -# ifdef __NR_pwrite -# error "__NR_pwrite and __NR_pwrite64 both defined???" -# endif -# define __NR_pwrite __NR_pwrite64 -#endif - - -ssize_t -__libc_pwrite (int fd, const void *buf, size_t count, off_t offset) -{ - return SYSCALL_CANCEL (pwrite, fd, buf, count, 0, - __LONG_LONG_PAIR (offset >> 31, offset)); -} - -strong_alias (__libc_pwrite, __pwrite) -weak_alias (__libc_pwrite, pwrite) diff --git a/sysdeps/unix/sysv/linux/sh/pwrite64.c b/sysdeps/unix/sysv/linux/sh/pwrite64.c deleted file mode 100644 index 0c189fe..0000000 --- a/sysdeps/unix/sysv/linux/sh/pwrite64.c +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright (C) 1997-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ralf Baechle , 1998. - - 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 - . */ - -#include -#include -#include - -#include -#include - -#ifdef __NR_pwrite64 /* Newer kernels renamed but it's the same. */ -# ifdef __NR_pwrite -# error "__NR_pwrite and __NR_pwrite64 both defined???" -# endif -# define __NR_pwrite __NR_pwrite64 -#endif - - -ssize_t -__libc_pwrite64 (int fd, const void *buf, size_t count, off64_t offset) -{ - return SYSCALL_CANCEL (pwrite, fd, buf, count, 0, - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset & 0xffffffff))); -} - -weak_alias (__libc_pwrite64, __pwrite64) -libc_hidden_weak (__pwrite64) -weak_alias (__libc_pwrite64, pwrite64) diff --git a/sysdeps/unix/sysv/linux/wordsize-64/pwrite64.c b/sysdeps/unix/sysv/linux/wordsize-64/pwrite64.c deleted file mode 100644 index b7f298d..0000000 --- a/sysdeps/unix/sysv/linux/wordsize-64/pwrite64.c +++ /dev/null @@ -1 +0,0 @@ -/* Empty since the pread syscall is equivalent. */ diff --git a/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list b/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list index 79a7006..7f8985f 100644 --- a/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list +++ b/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list @@ -3,7 +3,6 @@ # Whee! 64-bit systems naturally implement llseek. llseek EXTRA lseek i:iii __libc_lseek __lseek lseek __libc_lseek64 __llseek llseek __lseek64 lseek64 lseek llseek - -pwrite - pwrite Ci:ibni __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64 fstatfs - fstatfs i:ip __fstatfs fstatfs fstatfs64 __fstatfs64 statfs - statfs i:sp __statfs statfs statfs64 mmap - mmap b:aniiii __mmap mmap __mmap64 mmap64