From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27070 invoked by alias); 9 Nov 2016 13:44:35 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 21529 invoked by uid 89); 9 Nov 2016 13:44:28 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=no version=3.3.2 spammy=1523, 1522, truncate64, preparation X-HELO: mail-vk0-f48.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=wJ26wKs6hk70uhRm6M3xOt1WXfRyWrY1JvkgluLXPaA=; b=lvun4vcVFjo/Yvqv9BR/XvbN+gUCGA65JJ3uljvjtFk9qS3QM/SIaEcVPp4rkI6am+ t66Abnch5bxskYWWtz3J4VfCGwqWjusIljBOWLx71hcYrngyC5IjprRDDgaxWW88Cuzw h80dJGc/71QgU5K0s2+yOcMgWQumr39IVxyR+VKNblO41jTSy20l15olPaxA5ucmPQJQ wCF9VHK2YFNzwoYl3VpR1zLcFwUlp30GzT5BrArpK3gddao02s6i26UIJSRgrmBPEBpV 0bO3NhLF9wIVupjXKGy0/fu9D0R6+wIb76CVN0rbjz7tTWdXX9yokqcra26Svhhq1p9C 897Q== X-Gm-Message-State: ABUngvdxAZJ3N+rJcO0+zUNOrTN8cmoZVdNQUsY31u3PNtvBW7y38xI1fjzBePmwWkAIKx6w X-Received: by 10.31.198.198 with SMTP id w189mr11729655vkf.26.1478699055950; Wed, 09 Nov 2016 05:44:15 -0800 (PST) Subject: Re: [PATCH 3/4] Consolidate Linux ftruncate implementations To: libc-alpha@sourceware.org References: <1474383714-15187-1-git-send-email-adhemerval.zanella@linaro.org> <1474383714-15187-4-git-send-email-adhemerval.zanella@linaro.org> <233a183a-8327-4077-77ad-f90d20505f2e@linaro.org> <3e65050e-9e7b-a99f-dc56-417611d34d9e@linaro.org> From: Adhemerval Zanella Message-ID: <8a731c79-a0d3-a6f2-cfdd-ae14702967fc@linaro.org> Date: Wed, 09 Nov 2016 13:44:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <3e65050e-9e7b-a99f-dc56-417611d34d9e@linaro.org> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2016-11/txt/msg00334.txt.bz2 Does anyone have any objection with this patch? If no one opposes I would like to push it to avoid get in late near freeze. On 25/10/2016 15:53, Adhemerval Zanella wrote: > Ping (x2). > > On 11/10/2016 11:41, Adhemerval Zanella wrote: >> Ping. >> >> On 20/09/2016 12:01, Adhemerval Zanella wrote: >>> THis patch consolidates all Linux ftruncate implementation on >>> sysdeps/unix/sysv/linux/ftruncate{64}.c. It is based on >>> {INTERNAL,INLINE}_SYSCALL patch [1] to simplify the syscall construction. >>> >>> General idea is to build ftruncate iff __OFF_T_MATCHES_OFF64_T is not >>> defined, otherwise ftruncate64 will be build and ftruncate will be an >>> alias. The fallocate will use old compat syscall and pass 32-bit off_t >>> argument, while fallocate64 will handle the correct off64_t passing using >>> __ALIGNMENT_ARG and SYSCALL_LL64 macros. >>> >>> Tested on x86_64, i386, aarch64, and armhf. >>> >>> * posix/tst-truncate-common.c: New file. >>> * posix/tst-truncate.c: Use tst-truncate-common.c. >>> * posix/tst-truncate64.c: Likewise and add LFS tests. >>> * sysdeps/unix/sysv/linux/arm/ftruncate64.c: Remove file. >>> * sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c: Likewise. >>> * sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c: Likewise. >>> * sysdeps/unix/sysv/linux/mips/mips32/ftruncate64.c: Likewise. >>> * sysdeps/unix/sysv/linux/mips/mips64/ftruncate64.c: Likewise. >>> * sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c: Likewise. >>> * sysdeps/unix/sysv/linux/wordsize-64/ftruncate64.c: Likewise. >>> * sysdeps/unix/sysv/linux/ftruncate.c: New file. >>> * sysdeps/unix/sysv/linux/ftruncate64.c (__ftruncate64): Use >>> INLINE_SYSCALL_CALL, __ALIGNMENT_ARG and SYSCALL_LL64 macros. >>> [__OFF_T_MATCHES_OFF64_T] (ftruncate): Add alias. >>> >>> [1] https://sourceware.org/ml/libc-alpha/2016-08/msg00646.html >>> --- >>> posix/tst-truncate-common.c | 88 ++++++++++++++++ >>> posix/tst-truncate.c | 114 +-------------------- >>> posix/tst-truncate64.c | 21 +++- >>> sysdeps/unix/sysv/linux/arm/ftruncate64.c | 36 ------- >>> sysdeps/unix/sysv/linux/ftruncate.c | 35 +++++++ >>> sysdeps/unix/sysv/linux/ftruncate64.c | 21 ++-- >>> .../sysv/linux/generic/wordsize-32/ftruncate.c | 31 ------ >>> .../sysv/linux/generic/wordsize-32/ftruncate64.c | 32 ------ >>> sysdeps/unix/sysv/linux/mips/mips32/ftruncate64.c | 36 ------- >>> sysdeps/unix/sysv/linux/mips/mips64/ftruncate64.c | 1 - >>> .../sysv/linux/powerpc/powerpc32/ftruncate64.c | 36 ------- >>> sysdeps/unix/sysv/linux/wordsize-64/ftruncate64.c | 1 - >>> 12 files changed, 156 insertions(+), 296 deletions(-) >>> create mode 100644 posix/tst-truncate-common.c >>> delete mode 100644 sysdeps/unix/sysv/linux/arm/ftruncate64.c >>> create mode 100644 sysdeps/unix/sysv/linux/ftruncate.c >>> delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c >>> delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c >>> delete mode 100644 sysdeps/unix/sysv/linux/mips/mips32/ftruncate64.c >>> delete mode 100644 sysdeps/unix/sysv/linux/mips/mips64/ftruncate64.c >>> delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c >>> delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/ftruncate64.c >>> >>> diff --git a/posix/tst-truncate-common.c b/posix/tst-truncate-common.c >>> new file mode 100644 >>> index 0000000..80bf277 >>> --- /dev/null >>> +++ b/posix/tst-truncate-common.c >>> @@ -0,0 +1,88 @@ >>> +/* Common f{truncate} tests definitions. >>> + 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 >>> + . */ >>> + >>> +#include >>> +#include >>> +#include >>> +#include >>> + >>> +static void do_prepare (void); >>> +#define PREPARE(argc, argv) do_prepare () >>> +static int do_test (void); >>> +#define TEST_FUNCTION do_test () >>> + >>> +#include >>> + >>> +static char *temp_filename; >>> +static int temp_fd; >>> + >>> +static void >>> +do_prepare (void) >>> +{ >>> + temp_fd = create_temp_file ("tst-trucate.", &temp_filename); >>> + if (temp_fd == -1) >>> + { >>> + printf ("cannot create temporary file: %m\n"); >>> + exit (1); >>> + } >>> +} >>> + >>> +#define FAIL(str) \ >>> + do { printf ("error: %s (line %d)\n", str, __LINE__); return 1; } while (0) >>> + >>> +static int >>> +do_test_with_offset (off_t offset) >>> +{ >>> + struct stat st; >>> + char buf[1000]; >>> + >>> + memset (buf, 0xcf, sizeof (buf)); >>> + >>> + if (pwrite (temp_fd, buf, sizeof (buf), offset) != sizeof (buf)) >>> + FAIL ("write failed"); >>> + if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + sizeof (buf))) >>> + FAIL ("initial size wrong"); >>> + >>> + if (ftruncate (temp_fd, offset + 800) < 0) >>> + FAIL ("size reduction with ftruncate failed"); >>> + if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 800)) >>> + FAIL ("size after reduction with ftruncate is incorrect"); >>> + >>> + /* The following test covers more than POSIX. POSIX does not require >>> + that ftruncate() can increase the file size. But we are testing >>> + Unix systems. */ >>> + if (ftruncate (temp_fd, offset + 1200) < 0) >>> + FAIL ("size increate with ftruncate failed"); >>> + if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 1200)) >>> + FAIL ("size after increase is incorrect"); >>> + >>> + if (truncate (temp_filename, offset + 800) < 0) >>> + FAIL ("size reduction with truncate failed"); >>> + if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 800)) >>> + FAIL ("size after reduction with truncate incorrect"); >>> + >>> + /* The following test covers more than POSIX. POSIX does not require >>> + that truncate() can increase the file size. But we are testing >>> + Unix systems. */ >>> + if (truncate (temp_filename, (offset + 1200)) < 0) >>> + FAIL ("size increase with truncate failed"); >>> + if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 1200)) >>> + FAIL ("size increase with truncate is incorrect"); >>> + >>> + return 0; >>> +} >>> diff --git a/posix/tst-truncate.c b/posix/tst-truncate.c >>> index 99bddb3..3166c3b 100644 >>> --- a/posix/tst-truncate.c >>> +++ b/posix/tst-truncate.c >>> @@ -17,116 +17,10 @@ >>> License along with the GNU C Library; if not, see >>> . */ >>> >>> -#include >>> -#include >>> -#include >>> -#include >>> -#include >>> +#include "tst-truncate-common.c" >>> >>> - >>> -/* Allow testing of the 64-bit versions as well. */ >>> -#ifndef TRUNCATE >>> -# define TRUNCATE truncate >>> -# define FTRUNCATE ftruncate >>> -#endif >>> - >>> -#define STRINGIFY(s) STRINGIFY2 (s) >>> -#define STRINGIFY2(s) #s >>> - >>> -/* Prototype for our test function. */ >>> -extern void do_prepare (int argc, char *argv[]); >>> -extern int do_test (int argc, char *argv[]); >>> - >>> -/* We have a preparation function. */ >>> -#define PREPARE do_prepare >>> - >>> -/* We might need a bit longer timeout. */ >>> -#define TIMEOUT 20 /* sec */ >>> - >>> -/* This defines the `main' function and some more. */ >>> -#include >>> - >>> -/* These are for the temporary file we generate. */ >>> -char *name; >>> -int fd; >>> - >>> -void >>> -do_prepare (int argc, char *argv[]) >>> +static int >>> +do_test (void) >>> { >>> - size_t name_len; >>> - >>> -#define FNAME FNAME2(TRUNCATE) >>> -#define FNAME2(s) "/" STRINGIFY(s) "XXXXXX" >>> - >>> - name_len = strlen (test_dir); >>> - name = xmalloc (name_len + sizeof (FNAME)); >>> - mempcpy (mempcpy (name, test_dir, name_len), FNAME, sizeof (FNAME)); >>> - add_temp_file (name); >>> - >>> - /* Open our test file. */ >>> - fd = mkstemp (name); >>> - if (fd == -1) >>> - error (EXIT_FAILURE, errno, "cannot open test file `%s'", name); >>> -} >>> - >>> - >>> -int >>> -do_test (int argc, char *argv[]) >>> -{ >>> - struct stat st; >>> - char buf[1000]; >>> - >>> - memset (buf, '\0', sizeof (buf)); >>> - >>> - if (write (fd, buf, sizeof (buf)) != sizeof (buf)) >>> - error (EXIT_FAILURE, errno, "during write"); >>> - >>> - if (fstat (fd, &st) < 0 || st.st_size != sizeof (buf)) >>> - error (EXIT_FAILURE, 0, "initial size wrong"); >>> - >>> - >>> - if (FTRUNCATE (fd, 800) < 0) >>> - error (EXIT_FAILURE, errno, "size reduction with %s failed", >>> - STRINGIFY (FTRUNCATE)); >>> - >>> - if (fstat (fd, &st) < 0 || st.st_size != 800) >>> - error (EXIT_FAILURE, 0, "size after reduction with %s incorrect", >>> - STRINGIFY (FTRUNCATE)); >>> - >>> - /* The following test covers more than POSIX. POSIX does not require >>> - that ftruncate() can increase the file size. But we are testing >>> - Unix systems. */ >>> - if (FTRUNCATE (fd, 1200) < 0) >>> - error (EXIT_FAILURE, errno, "size increase with %s failed", >>> - STRINGIFY (FTRUNCATE)); >>> - >>> - if (fstat (fd, &st) < 0 || st.st_size != 1200) >>> - error (EXIT_FAILURE, 0, "size after increase with %s incorrect", >>> - STRINGIFY (FTRUNCATE)); >>> - >>> - >>> - if (TRUNCATE (name, 800) < 0) >>> - error (EXIT_FAILURE, errno, "size reduction with %s failed", >>> - STRINGIFY (TRUNCATE)); >>> - >>> - if (fstat (fd, &st) < 0 || st.st_size != 800) >>> - error (EXIT_FAILURE, 0, "size after reduction with %s incorrect", >>> - STRINGIFY (TRUNCATE)); >>> - >>> - /* The following test covers more than POSIX. POSIX does not require >>> - that truncate() can increase the file size. But we are testing >>> - Unix systems. */ >>> - if (TRUNCATE (name, 1200) < 0) >>> - error (EXIT_FAILURE, errno, "size increase with %s failed", >>> - STRINGIFY (TRUNCATE)); >>> - >>> - if (fstat (fd, &st) < 0 || st.st_size != 1200) >>> - error (EXIT_FAILURE, 0, "size after increase with %s incorrect", >>> - STRINGIFY (TRUNCATE)); >>> - >>> - >>> - close (fd); >>> - unlink (name); >>> - >>> - return 0; >>> + return do_test_with_offset (0); >>> } >>> diff --git a/posix/tst-truncate64.c b/posix/tst-truncate64.c >>> index 64eb0a4..08c4942 100644 >>> --- a/posix/tst-truncate64.c >>> +++ b/posix/tst-truncate64.c >>> @@ -17,7 +17,22 @@ >>> License along with the GNU C Library; if not, see >>> . */ >>> >>> -#define TRUNCATE truncate64 >>> -#define FTRUNCATE ftruncate64 >>> +#define _FILE_OFFSET_BITS 64 >>> +#include "tst-truncate-common.c" >>> >>> -#include "tst-truncate.c" >>> +static int >>> +do_test (void) >>> +{ >>> + int ret; >>> + >>> + ret = do_test_with_offset (0); >>> + if (ret == -1) >>> + return -1; >>> + >>> + off_t base_offset = UINT32_MAX + 512LL; >>> + ret = do_test_with_offset (base_offset); >>> + if (ret == -1) >>> + return 1; >>> + >>> + return 0; >>> +} >>> diff --git a/sysdeps/unix/sysv/linux/arm/ftruncate64.c b/sysdeps/unix/sysv/linux/arm/ftruncate64.c >>> deleted file mode 100644 >>> index 0e8d8ba..0000000 >>> --- a/sysdeps/unix/sysv/linux/arm/ftruncate64.c >>> +++ /dev/null >>> @@ -1,36 +0,0 @@ >>> -/* Copyright (C) 1997-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 >>> - . */ >>> - >>> -#include >>> -#include >>> -#include >>> -#include >>> - >>> -#include >>> -#include >>> - >>> -/* Truncate the file FD refers to to LENGTH bytes. */ >>> -int >>> -__ftruncate64 (int fd, off64_t length) >>> -{ >>> - unsigned int low = length & 0xffffffff; >>> - unsigned int high = length >> 32; >>> - int result = INLINE_SYSCALL (ftruncate64, 4, fd, 0, >>> - __LONG_LONG_PAIR (high, low)); >>> - return result; >>> -} >>> -weak_alias (__ftruncate64, ftruncate64) >>> diff --git a/sysdeps/unix/sysv/linux/ftruncate.c b/sysdeps/unix/sysv/linux/ftruncate.c >>> new file mode 100644 >>> index 0000000..5c0cd44 >>> --- /dev/null >>> +++ b/sysdeps/unix/sysv/linux/ftruncate.c >>> @@ -0,0 +1,35 @@ >>> +/* 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 >>> + . */ >>> + >>> +#include >>> +#include >>> +#include >>> + >>> +#ifndef __OFF_T_MATCHES_OFF64_T >>> +/* Truncate the file FD refers to LENGTH bytes. */ >>> +int >>> +__ftruncate (int fd, off_t length) >>> +{ >>> +# ifndef __NR_ftruncate >>> + return INLINE_SYSCALL_CALL (ftruncate64, fd, >>> + __ALIGNMENT_ARG SYSCALL_LL (length)); >>> +# else >>> + return INLINE_SYSCALL_CALL (ftruncate, fd, length); >>> +# endif >>> +} >>> +weak_alias (__ftruncate, ftruncate) >>> +#endif >>> diff --git a/sysdeps/unix/sysv/linux/ftruncate64.c b/sysdeps/unix/sysv/linux/ftruncate64.c >>> index a6bf878..914ce67 100644 >>> --- a/sysdeps/unix/sysv/linux/ftruncate64.c >>> +++ b/sysdeps/unix/sysv/linux/ftruncate64.c >>> @@ -15,22 +15,23 @@ >>> License along with the GNU C Library; if not, see >>> . */ >>> >>> -#include >>> -#include >>> -#include >>> #include >>> - >>> #include >>> -#include >>> +#include >>> + >>> +#ifndef __NR_ftruncate64 >>> +# define __NR_ftruncate64 __NR_ftruncate >>> +#endif >>> >>> /* Truncate the file referenced by FD to LENGTH bytes. */ >>> int >>> __ftruncate64 (int fd, off64_t length) >>> { >>> - unsigned int low = length & 0xffffffff; >>> - unsigned int high = length >> 32; >>> - int result = INLINE_SYSCALL (ftruncate64, 3, fd, >>> - __LONG_LONG_PAIR (high, low)); >>> - return result; >>> + return INLINE_SYSCALL_CALL (ftruncate64, fd, >>> + __ALIGNMENT_ARG SYSCALL_LL64 (length)); >>> } >>> weak_alias (__ftruncate64, ftruncate64) >>> + >>> +#ifdef __OFF_T_MATCHES_OFF64_T >>> +weak_alias (__ftruncate64, ftruncate); >>> +#endif >>> diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c >>> deleted file mode 100644 >>> index e1b500d..0000000 >>> --- a/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c >>> +++ /dev/null >>> @@ -1,31 +0,0 @@ >>> -/* Copyright (C) 2011-2016 Free Software Foundation, Inc. >>> - This file is part of the GNU C Library. >>> - Contributed by Chris Metcalf , 2011. >>> - >>> - 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 >>> - >>> -/* Truncate the file FD refers to to LENGTH bytes. */ >>> -int >>> -__ftruncate (int fd, off_t length) >>> -{ >>> - return INLINE_SYSCALL (ftruncate64, __ALIGNMENT_COUNT (3, 4), fd, >>> - __ALIGNMENT_ARG >>> - __LONG_LONG_PAIR (length >> 31, length)); >>> -} >>> -weak_alias (__ftruncate, ftruncate) >>> diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c >>> deleted file mode 100644 >>> index 946f05a..0000000 >>> --- a/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c >>> +++ /dev/null >>> @@ -1,32 +0,0 @@ >>> -/* Copyright (C) 2011-2016 Free Software Foundation, Inc. >>> - This file is part of the GNU C Library. >>> - Contributed by Chris Metcalf , 2011. >>> - >>> - 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 >>> - >>> -/* Truncate the file FD refers to to LENGTH bytes. */ >>> -int >>> -__ftruncate64 (int fd, off64_t length) >>> -{ >>> - unsigned int low = length & 0xffffffff; >>> - unsigned int high = length >> 32; >>> - return INLINE_SYSCALL (ftruncate64, __ALIGNMENT_COUNT (3, 4), fd, >>> - __ALIGNMENT_ARG __LONG_LONG_PAIR (high, low)); >>> -} >>> -weak_alias (__ftruncate64, ftruncate64) >>> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/ftruncate64.c b/sysdeps/unix/sysv/linux/mips/mips32/ftruncate64.c >>> deleted file mode 100644 >>> index 0e8d8ba..0000000 >>> --- a/sysdeps/unix/sysv/linux/mips/mips32/ftruncate64.c >>> +++ /dev/null >>> @@ -1,36 +0,0 @@ >>> -/* Copyright (C) 1997-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 >>> - . */ >>> - >>> -#include >>> -#include >>> -#include >>> -#include >>> - >>> -#include >>> -#include >>> - >>> -/* Truncate the file FD refers to to LENGTH bytes. */ >>> -int >>> -__ftruncate64 (int fd, off64_t length) >>> -{ >>> - unsigned int low = length & 0xffffffff; >>> - unsigned int high = length >> 32; >>> - int result = INLINE_SYSCALL (ftruncate64, 4, fd, 0, >>> - __LONG_LONG_PAIR (high, low)); >>> - return result; >>> -} >>> -weak_alias (__ftruncate64, ftruncate64) >>> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/ftruncate64.c b/sysdeps/unix/sysv/linux/mips/mips64/ftruncate64.c >>> deleted file mode 100644 >>> index 6e25b02..0000000 >>> --- a/sysdeps/unix/sysv/linux/mips/mips64/ftruncate64.c >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -/* Empty. */ >>> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c >>> deleted file mode 100644 >>> index 9eee1d7..0000000 >>> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c >>> +++ /dev/null >>> @@ -1,36 +0,0 @@ >>> -/* Copyright (C) 1997-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 >>> - . */ >>> - >>> -#include >>> -#include >>> -#include >>> - >>> -#include >>> -#include >>> - >>> -/* Truncate the file referenced by FD to LENGTH bytes. */ >>> -int >>> -__ftruncate64 (int fd, off64_t length) >>> -{ >>> - /* On PPC32 64bit values are aligned in odd/even register pairs. */ >>> - int result = INLINE_SYSCALL (ftruncate64, 4, fd, 0, >>> - (long) (length >> 32), >>> - (long) length); >>> - >>> - return result; >>> -} >>> -weak_alias (__ftruncate64, ftruncate64) >>> diff --git a/sysdeps/unix/sysv/linux/wordsize-64/ftruncate64.c b/sysdeps/unix/sysv/linux/wordsize-64/ftruncate64.c >>> deleted file mode 100644 >>> index 673a8b5..0000000 >>> --- a/sysdeps/unix/sysv/linux/wordsize-64/ftruncate64.c >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -/* ftruncate64 is the same as ftruncate. */ >>>