From patchwork Thu Jul 23 19:46:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 40153 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 35B463857013; Thu, 23 Jul 2020 19:46:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 35B463857013 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1595533613; bh=BduDpVMukOHq7XNdd0lUfP8s50BhJQxgs6HwjNcY6h8=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=iSA8Tjd/hI7ZwpgPDe2Ptk8HjAwPe+TMQ0hsBEHU9HjVSCNtW2fdjP6FWab+v6ifv y9yzZt3mPaxe3HghvvIkOlvjNZtWHEA8j5LnFNuBH3vWSKOzeO5X4zf6dLJ9MujKFV HKuL49W9fbSmxIiER7jJbXE20bPMLFzM0zPlhwbQ= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by sourceware.org (Postfix) with ESMTPS id 938903858D38 for ; Thu, 23 Jul 2020 19:46:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 938903858D38 Received: by mail-qk1-x744.google.com with SMTP id x69so6581304qkb.1 for ; Thu, 23 Jul 2020 12:46:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=BduDpVMukOHq7XNdd0lUfP8s50BhJQxgs6HwjNcY6h8=; b=FnSihPaMoJdiuqEpupX3vW8JhaHjwmhh8qLOslV8tCqJYD4nkuccD67Hnl3mAPJxvr kbcRlUd3UDTEsSH+bcdGIDe/LhkN1gyZsTGopByiyw1E05ZmiM3XEWj3uECe2i963Csh l0Bqb4Lgh65wiqiOaUf0T4MbSEHXCATzObjSQwlMUsw/j+3CBQviSntJMRMqGwT6f5zh CIbRQ/jljNdS7AXdEQ92J/DMsfdNsWThym0wz/1qof7tlscM1CE4UWVbyLSVlUUeASf5 4Y/4YrG4/MIo6O119rRWaP0j+D3+MCR2a2rvuL2v9Imh47U9scPKFPvd2AsAxiEBYdJ3 OksA== X-Gm-Message-State: AOAM5314yewVADnfx/naLfCLOkPDYODRKwUmbnc22pYXS1bHk5fxA/Cg MfvFdTjHuEgxxXQ8G3dLaeXfrycs6uQ= X-Google-Smtp-Source: ABdhPJzLL9ZVkL4LrBpilVwc0FMpwKfsW3w3ZY28+F0eNJcjeq1PQ3xNt2ycJOnm+UBh1rwxufmJsw== X-Received: by 2002:a37:4c06:: with SMTP id z6mr6662269qka.481.1595533608436; Thu, 23 Jul 2020 12:46:48 -0700 (PDT) Received: from localhost.localdomain ([177.194.48.209]) by smtp.googlemail.com with ESMTPSA id k56sm3570639qtk.61.2020.07.23.12.46.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jul 2020 12:46:48 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 00/16] Add y2038 support for stat functions Date: Thu, 23 Jul 2020 16:46:25 -0300 Message-Id: <20200723194641.1949404-1-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Spam-Status: No, score=-9.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Cc: Alistair Francis Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" As discussed in a previous thread [1], the {f,l}stat{at}{64} functions use an old mechanism prior symbol versioning to provide a compatibility layer. As described in the thread, this approach has some drawbacks so I decided to use the anoother strategy which requires a lot of plumbing. So the first 6 patches consolidate the various {f,l}xstat{64} linux implementations. I tried to keep as less arch-specific implementations as possible (there are still outliers such as alpha and mips). The xstat implementation is mainly responsible to issue the correct syscall, the heavy lifting of handling the _STAT_VER versions are done on the xstat_conv functions (which is not changed on this patchset). The next patch removes all internal usage of xstat function by replacing with the stat one. It would allow to move the xstat function later to compat symbols. Some Linux consolidation is also done to avoid need to replicate the new y2038 stat struct on multiple architectures or add syscall support on multiple symbols. First the struct stat is moved to its own header and stat/lstat/fstat is implemented on top on fstatat. Finally fstatat is implemented without calling fxstatat and xstat symbols are moved to compat ones. The y2038 stat struct is added as as generic definition for all Linux ABIs and it is disentangled from kernel ABI. The patchset also removes the mknod{at} static wrapper and move them to libc symbols. I decided to send it along this patchset because its defintion are entangled on platform specific header and moving them to compat symbols allow to simplify the stat code as well. [1] https://sourceware.org/pipermail/libc-alpha/2020-July/116342.html Adhemerval Zanella (16): linux: Always define STAT_IS_KERNEL_STAT linux: Define STAT64_IS_KERNEL_STAT64 linux: Consolidate xstat{64} linux: Consolidate lxstat{64} linux: Consolidate fxstat{64} linux: Consolidate fxstatat{64} Linux: Consolidate xmknod Remove internal usage of extensible stat functions Remove stat wrapper functions, move them to exported symbols Remove mknod wrapper functions, move them to symbols linux: Move the struct stat{64} to struct_stat.h linux: Implement {l}fstat{at} in terms of fstatat linux: Disentangle fstatat from fxstatat linux: Move {f}xstat{at} to compat symbols linux: Add {f}stat{at} y2038 support linux: Move xmknoda{at} to compat symbols catgets/open_catalog.c | 2 +- csu/check_fds.c | 2 +- elf/cache.c | 4 +- elf/dl-load.c | 4 +- elf/dl-misc.c | 2 +- elf/dl-profile.c | 2 +- iconv/gconv_cache.c | 2 +- include/sys/stat.h | 166 +++++++++++++----- inet/rcmd.c | 4 +- inet/ruserpass.c | 2 +- intl/loadmsgcat.c | 2 +- io/Makefile | 7 +- io/Versions | 5 + io/file_change_detection.c | 4 +- io/fstat.c | 33 +--- io/fstat64.c | 36 +--- io/fstatat.c | 36 +--- io/fstatat64.c | 36 +--- io/fts.c | 15 +- io/fts64.c | 5 +- io/ftw.c | 46 ++--- io/ftw64.c | 8 +- io/getdirname.c | 4 +- io/lstat.c | 33 +--- io/lstat64.c | 36 +--- io/mkdirat.c | 2 +- io/mkfifoat.c | 2 +- io/mknod.c | 35 +--- io/mknodat.c | 35 +--- io/openat.c | 2 +- io/openat64.c | 2 +- io/stat.c | 34 +--- io/stat64.c | 36 +--- io/sys/stat.h | 159 ----------------- io/xmknodat.c | 2 +- libio/fileops.c | 2 +- locale/loadarchive.c | 4 +- locale/loadlocale.c | 4 +- misc/daemon.c | 2 +- misc/getusershell.c | 2 +- nptl/sem_open.c | 2 +- nscd/gai.c | 5 + nscd/nscd_helper.c | 2 +- posix/glob.c | 7 - stdlib/canonicalize.c | 2 +- sysdeps/generic/struct_stat_time64.h | 7 + sysdeps/generic/xstatver.h | 4 + sysdeps/gnu/glob64-lstat-compat.c | 2 +- sysdeps/gnu/glob64.c | 2 +- sysdeps/mach/hurd/i386/libc.abilist | 10 ++ sysdeps/mach/hurd/ptsname.c | 2 +- sysdeps/mach/hurd/xmknod.c | 1 - sysdeps/mach/hurd/xmknodat.c | 2 - sysdeps/posix/dl-fileid.h | 2 +- sysdeps/posix/euidaccess.c | 2 +- sysdeps/posix/fdopendir.c | 2 +- sysdeps/posix/fpathconf.c | 2 +- sysdeps/posix/getaddrinfo.c | 4 +- sysdeps/posix/isfdtype.c | 2 +- sysdeps/posix/mkfifo.c | 3 +- sysdeps/posix/mkfifoat.c | 3 +- sysdeps/posix/opendir.c | 2 +- sysdeps/posix/pathconf.c | 2 +- sysdeps/posix/posix_fallocate.c | 2 +- sysdeps/posix/posix_fallocate64.c | 2 +- sysdeps/posix/sysconf.c | 2 +- sysdeps/posix/tempname.c | 5 +- sysdeps/unix/sysv/linux/Makefile | 8 +- sysdeps/unix/sysv/linux/aarch64/libc.abilist | 10 ++ .../alpha/bits/{stat.h => struct_stat.h} | 56 +----- sysdeps/unix/sysv/linux/alpha/dl-fxstatat64.c | 1 - .../sysv/linux/alpha/{fxstat.c => fxstat64.c} | 56 +++--- sysdeps/unix/sysv/linux/alpha/fxstatat.c | 52 ------ .../{generic/xstat.c => alpha/fxstatat64.c} | 35 ++-- sysdeps/unix/sysv/linux/alpha/kernel_stat.h | 2 + sysdeps/unix/sysv/linux/alpha/libc.abilist | 10 ++ .../sysv/linux/alpha/{lxstat.c => lxstat64.c} | 55 +++--- .../sysv/linux/alpha/{xstat.c => xstat64.c} | 55 +++--- sysdeps/unix/sysv/linux/alpha/xstatver.h | 14 ++ sysdeps/unix/sysv/linux/arc/kernel_stat.h | 1 + sysdeps/unix/sysv/linux/arc/libc.abilist | 10 ++ sysdeps/unix/sysv/linux/arm/fxstat.c | 1 - sysdeps/unix/sysv/linux/arm/fxstatat.c | 1 - sysdeps/unix/sysv/linux/arm/le/libc.abilist | 10 ++ sysdeps/unix/sysv/linux/arm/lxstat.c | 1 - sysdeps/unix/sysv/linux/arm/xstat.c | 1 - sysdeps/unix/sysv/linux/bits/stat.h | 114 +----------- sysdeps/unix/sysv/linux/bits/struct_stat.h | 131 ++++++++++++++ sysdeps/unix/sysv/linux/csky/libc.abilist | 10 ++ sysdeps/unix/sysv/linux/faccessat.c | 2 +- sysdeps/unix/sysv/linux/fexecve.c | 4 +- sysdeps/unix/sysv/linux/fstat.c | 42 +++++ sysdeps/unix/sysv/linux/fstat64.c | 52 ++++++ sysdeps/unix/sysv/linux/fstatat.c | 92 ++++++++++ sysdeps/unix/sysv/linux/fstatat64.c | 125 +++++++++++++ sysdeps/unix/sysv/linux/fxstat.c | 67 +++---- sysdeps/unix/sysv/linux/fxstat64.c | 56 +++--- sysdeps/unix/sysv/linux/fxstatat.c | 63 +++---- sysdeps/unix/sysv/linux/fxstatat64.c | 75 +++++--- .../generic/bits/{stat.h => struct_stat.h} | 59 +------ sysdeps/unix/sysv/linux/generic/lxstat.c | 48 ----- .../sysv/linux/generic/wordsize-32/fxstat.c | 57 ------ .../sysv/linux/generic/wordsize-32/fxstat64.c | 36 ---- .../sysv/linux/generic/wordsize-32/fxstatat.c | 56 ------ .../sysv/linux/generic/wordsize-32/lxstat.c | 55 ------ .../sysv/linux/generic/wordsize-32/lxstat64.c | 66 ------- .../sysv/linux/generic/wordsize-32/xstat.c | 54 ------ .../sysv/linux/generic/wordsize-32/xstat64.c | 63 ------- sysdeps/unix/sysv/linux/generic/xmknod.c | 54 ------ sysdeps/unix/sysv/linux/generic/xstatver.h | 10 ++ sysdeps/unix/sysv/linux/hppa/fxstat.c | 1 - sysdeps/unix/sysv/linux/hppa/fxstatat.c | 1 - sysdeps/unix/sysv/linux/hppa/kernel_stat.h | 2 + sysdeps/unix/sysv/linux/hppa/libc.abilist | 10 ++ sysdeps/unix/sysv/linux/hppa/lxstat.c | 1 - sysdeps/unix/sysv/linux/hppa/xstat.c | 1 - sysdeps/unix/sysv/linux/i386/fxstat.c | 59 ------- sysdeps/unix/sysv/linux/i386/fxstatat.c | 54 ------ sysdeps/unix/sysv/linux/i386/libc.abilist | 10 ++ sysdeps/unix/sysv/linux/i386/lxstat.c | 60 ------- sysdeps/unix/sysv/linux/i386/xstat.c | 59 ------- .../linux/ia64/bits/{stat.h => struct_stat.h} | 53 +----- sysdeps/unix/sysv/linux/ia64/kernel_stat.h | 1 + sysdeps/unix/sysv/linux/ia64/libc.abilist | 10 ++ sysdeps/unix/sysv/linux/ia64/xstatver.h | 10 ++ sysdeps/unix/sysv/linux/kernel_stat.h | 2 + sysdeps/unix/sysv/linux/kstat_cp.h | 2 + sysdeps/unix/sysv/linux/lstat.c | 42 +++++ sysdeps/unix/sysv/linux/lstat64.c | 51 ++++++ sysdeps/unix/sysv/linux/lxstat.c | 69 ++++---- sysdeps/unix/sysv/linux/lxstat64.c | 71 ++++++-- .../linux/m68k/bits/{stat.h => struct_stat.h} | 57 +----- sysdeps/unix/sysv/linux/m68k/fxstat.c | 1 - sysdeps/unix/sysv/linux/m68k/fxstatat.c | 1 - sysdeps/unix/sysv/linux/m68k/lxstat.c | 1 - .../unix/sysv/linux/m68k/m680x0/libc.abilist | 10 ++ sysdeps/unix/sysv/linux/m68k/xstat.c | 1 - sysdeps/unix/sysv/linux/m68k/xstatver.h | 13 ++ .../sysv/linux/microblaze/be/libc.abilist | 10 ++ .../microblaze/bits/{stat.h => struct_stat.h} | 65 ++----- sysdeps/unix/sysv/linux/microblaze/fxstat.c | 1 - sysdeps/unix/sysv/linux/microblaze/fxstatat.c | 1 - .../unix/sysv/linux/microblaze/kernel_stat.h | 2 + sysdeps/unix/sysv/linux/microblaze/lxstat.c | 1 - sysdeps/unix/sysv/linux/microblaze/xstat.c | 1 - sysdeps/unix/sysv/linux/microblaze/xstatver.h | 13 ++ .../linux/mips/bits/{stat.h => struct_stat.h} | 57 +----- sysdeps/unix/sysv/linux/mips/fxstat.c | 49 ++++++ sysdeps/unix/sysv/linux/mips/kernel_stat.h | 7 + .../sysv/linux/{wordsize-64 => mips}/lxstat.c | 44 ++--- .../sysv/linux/mips/mips32/fpu/libc.abilist | 10 ++ .../unix/sysv/linux/mips/mips32/fxstatat.c | 1 - .../unix/sysv/linux/mips/mips64/fxstat64.c | 21 +-- .../fxstat.c => mips/mips64/fxstatat.c} | 33 ++-- .../unix/sysv/linux/mips/mips64/fxstatat64.c | 35 ++-- .../unix/sysv/linux/mips/mips64/kstat_cp.h | 71 ++++++++ .../unix/sysv/linux/mips/mips64/lxstat64.c | 22 +-- .../sysv/linux/mips/mips64/n32/libc.abilist | 10 ++ .../sysv/linux/mips/mips64/n64/libc.abilist | 10 ++ .../unix/sysv/linux/mips/mips64/statx_cp.c | 3 - sysdeps/unix/sysv/linux/mips/mips64/xstat64.c | 25 ++- .../sysv/linux/{wordsize-64 => mips}/xstat.c | 41 +++-- sysdeps/unix/sysv/linux/mips/xstatver.h | 13 ++ sysdeps/unix/sysv/linux/mknod.c | 28 +++ sysdeps/unix/sysv/linux/mknodat.c | 41 +++++ sysdeps/unix/sysv/linux/nios2/libc.abilist | 10 ++ sysdeps/unix/sysv/linux/oldglob.c | 2 +- sysdeps/unix/sysv/linux/pathconf.c | 4 +- .../powerpc/bits/{stat.h => struct_stat.h} | 64 +------ .../linux/powerpc/powerpc32/fpu/libc.abilist | 10 ++ .../sysv/linux/powerpc/powerpc32/fxstat.c | 1 - .../sysv/linux/powerpc/powerpc32/fxstatat.c | 1 - .../linux/powerpc/powerpc32/kernel_stat.h | 2 + .../sysv/linux/powerpc/powerpc32/lxstat.c | 2 - .../unix/sysv/linux/powerpc/powerpc32/xstat.c | 1 - .../linux/powerpc/powerpc64/be/libc.abilist | 10 ++ .../linux/powerpc/powerpc64/kernel_stat.h | 1 + .../linux/powerpc/powerpc64/le/libc.abilist | 10 ++ sysdeps/unix/sysv/linux/powerpc/xstatver.h | 17 ++ sysdeps/unix/sysv/linux/ptsname.c | 4 +- .../unix/sysv/linux/riscv/rv64/libc.abilist | 10 ++ .../linux/s390/bits/{stat.h => struct_stat.h} | 68 +------ sysdeps/unix/sysv/linux/s390/s390-32/fxstat.c | 1 - .../unix/sysv/linux/s390/s390-32/fxstatat.c | 1 - .../unix/sysv/linux/s390/s390-32/libc.abilist | 10 ++ sysdeps/unix/sysv/linux/s390/s390-32/lxstat.c | 1 - sysdeps/unix/sysv/linux/s390/s390-32/xstat.c | 1 - .../sysv/linux/s390/s390-64/kernel_stat.h | 1 + .../unix/sysv/linux/s390/s390-64/libc.abilist | 10 ++ sysdeps/unix/sysv/linux/s390/xstatver.h | 20 +++ sysdeps/unix/sysv/linux/sh/fxstat.c | 1 - sysdeps/unix/sysv/linux/sh/fxstatat.c | 1 - sysdeps/unix/sysv/linux/sh/le/libc.abilist | 10 ++ sysdeps/unix/sysv/linux/sh/lxstat.c | 2 - sysdeps/unix/sysv/linux/sh/xstat.c | 1 - .../sparc/bits/{stat.h => struct_stat.h} | 60 +------ .../unix/sysv/linux/sparc/sparc32/fxstat.c | 1 - .../unix/sysv/linux/sparc/sparc32/fxstatat.c | 1 - .../sysv/linux/sparc/sparc32/kernel_stat.h | 2 + .../sysv/linux/sparc/sparc32/libc.abilist | 10 ++ .../unix/sysv/linux/sparc/sparc32/lxstat.c | 2 - sysdeps/unix/sysv/linux/sparc/sparc32/xstat.c | 1 - .../sysv/linux/sparc/sparc64/dl-fxstatat64.c | 1 - .../unix/sysv/linux/sparc/sparc64/fxstat.c | 1 - .../unix/sysv/linux/sparc/sparc64/fxstatat.c | 1 - .../sysv/linux/sparc/sparc64/kernel_stat.h | 7 + .../unix/sysv/linux/sparc/sparc64/kstat_cp.h | 46 +++++ .../sysv/linux/sparc/sparc64/libc.abilist | 10 ++ .../unix/sysv/linux/sparc/sparc64/lxstat.c | 1 - sysdeps/unix/sysv/linux/sparc/sparc64/xstat.c | 1 - sysdeps/unix/sysv/linux/sparc/xstatver.h | 13 ++ sysdeps/unix/sysv/linux/stat.c | 42 +++++ sysdeps/unix/sysv/linux/stat64.c | 52 ++++++ sysdeps/unix/sysv/linux/stat_t64_cp.c | 92 ++++++++++ .../fxstatat64.c => stat_t64_cp.h} | 27 +-- sysdeps/unix/sysv/linux/statx_cp.c | 54 ++++++ sysdeps/unix/sysv/linux/statx_cp.h | 6 + sysdeps/unix/sysv/linux/struct_stat_time64.h | 122 +++++++++++++ sysdeps/unix/sysv/linux/ttyname.c | 8 +- sysdeps/unix/sysv/linux/ttyname_r.c | 8 +- .../sysv/linux/wordsize-64/dl-fxstatat64.c | 1 - .../unix/sysv/linux/wordsize-64/fxstat64.c | 1 - .../unix/sysv/linux/wordsize-64/fxstatat.c | 48 ----- .../unix/sysv/linux/wordsize-64/fxstatat64.c | 1 - .../unix/sysv/linux/wordsize-64/lxstat64.c | 1 - sysdeps/unix/sysv/linux/wordsize-64/xstat64.c | 1 - .../linux/x86/bits/{stat.h => struct_stat.h} | 67 +------ sysdeps/unix/sysv/linux/x86/xstatver.h | 16 ++ .../unix/sysv/linux/x86_64/64/libc.abilist | 10 ++ sysdeps/unix/sysv/linux/x86_64/kernel_stat.h | 1 + .../unix/sysv/linux/x86_64/x32/libc.abilist | 10 ++ sysdeps/unix/sysv/linux/xmknod.c | 24 +-- sysdeps/unix/sysv/linux/xmknodat.c | 23 +-- sysdeps/unix/sysv/linux/xstat.c | 68 ++++--- sysdeps/unix/sysv/linux/xstat64.c | 64 +++++-- sysdeps/unix/sysv/linux/xstatconv.c | 2 +- sysdeps/unix/sysv/linux/xstatconv.h | 2 +- sysdeps/unix/sysv/linux/xstatover.h | 67 +++++++ sysdeps/unix/sysv/linux/xstatver.h | 13 ++ sysvipc/ftok.c | 2 +- time/getdate.c | 2 +- time/tzfile.c | 4 +- 242 files changed, 2587 insertions(+), 2627 deletions(-) create mode 100644 sysdeps/generic/struct_stat_time64.h create mode 100644 sysdeps/generic/xstatver.h rename sysdeps/unix/sysv/linux/alpha/bits/{stat.h => struct_stat.h} (68%) delete mode 100644 sysdeps/unix/sysv/linux/alpha/dl-fxstatat64.c rename sysdeps/unix/sysv/linux/alpha/{fxstat.c => fxstat64.c} (53%) delete mode 100644 sysdeps/unix/sysv/linux/alpha/fxstatat.c rename sysdeps/unix/sysv/linux/{generic/xstat.c => alpha/fxstatat64.c} (56%) rename sysdeps/unix/sysv/linux/alpha/{lxstat.c => lxstat64.c} (55%) rename sysdeps/unix/sysv/linux/alpha/{xstat.c => xstat64.c} (55%) create mode 100644 sysdeps/unix/sysv/linux/alpha/xstatver.h delete mode 100644 sysdeps/unix/sysv/linux/arm/fxstat.c delete mode 100644 sysdeps/unix/sysv/linux/arm/fxstatat.c delete mode 100644 sysdeps/unix/sysv/linux/arm/lxstat.c delete mode 100644 sysdeps/unix/sysv/linux/arm/xstat.c create mode 100644 sysdeps/unix/sysv/linux/bits/struct_stat.h create mode 100644 sysdeps/unix/sysv/linux/fstat.c create mode 100644 sysdeps/unix/sysv/linux/fstat64.c create mode 100644 sysdeps/unix/sysv/linux/fstatat.c create mode 100644 sysdeps/unix/sysv/linux/fstatat64.c rename sysdeps/unix/sysv/linux/generic/bits/{stat.h => struct_stat.h} (70%) delete mode 100644 sysdeps/unix/sysv/linux/generic/lxstat.c delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat64.c delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c delete mode 100644 sysdeps/unix/sysv/linux/generic/xmknod.c create mode 100644 sysdeps/unix/sysv/linux/generic/xstatver.h delete mode 100644 sysdeps/unix/sysv/linux/hppa/fxstat.c delete mode 100644 sysdeps/unix/sysv/linux/hppa/fxstatat.c delete mode 100644 sysdeps/unix/sysv/linux/hppa/lxstat.c delete mode 100644 sysdeps/unix/sysv/linux/hppa/xstat.c delete mode 100644 sysdeps/unix/sysv/linux/i386/fxstat.c delete mode 100644 sysdeps/unix/sysv/linux/i386/fxstatat.c delete mode 100644 sysdeps/unix/sysv/linux/i386/lxstat.c delete mode 100644 sysdeps/unix/sysv/linux/i386/xstat.c rename sysdeps/unix/sysv/linux/ia64/bits/{stat.h => struct_stat.h} (72%) create mode 100644 sysdeps/unix/sysv/linux/ia64/xstatver.h create mode 100644 sysdeps/unix/sysv/linux/kstat_cp.h create mode 100644 sysdeps/unix/sysv/linux/lstat.c create mode 100644 sysdeps/unix/sysv/linux/lstat64.c rename sysdeps/unix/sysv/linux/m68k/bits/{stat.h => struct_stat.h} (72%) delete mode 100644 sysdeps/unix/sysv/linux/m68k/fxstat.c delete mode 100644 sysdeps/unix/sysv/linux/m68k/fxstatat.c delete mode 100644 sysdeps/unix/sysv/linux/m68k/lxstat.c delete mode 100644 sysdeps/unix/sysv/linux/m68k/xstat.c create mode 100644 sysdeps/unix/sysv/linux/m68k/xstatver.h rename sysdeps/unix/sysv/linux/microblaze/bits/{stat.h => struct_stat.h} (77%) delete mode 100644 sysdeps/unix/sysv/linux/microblaze/fxstat.c delete mode 100644 sysdeps/unix/sysv/linux/microblaze/fxstatat.c delete mode 100644 sysdeps/unix/sysv/linux/microblaze/lxstat.c delete mode 100644 sysdeps/unix/sysv/linux/microblaze/xstat.c create mode 100644 sysdeps/unix/sysv/linux/microblaze/xstatver.h rename sysdeps/unix/sysv/linux/mips/bits/{stat.h => struct_stat.h} (81%) create mode 100644 sysdeps/unix/sysv/linux/mips/fxstat.c rename sysdeps/unix/sysv/linux/{wordsize-64 => mips}/lxstat.c (59%) delete mode 100644 sysdeps/unix/sysv/linux/mips/mips32/fxstatat.c rename sysdeps/unix/sysv/linux/{wordsize-64/fxstat.c => mips/mips64/fxstatat.c} (62%) create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/kstat_cp.h delete mode 100644 sysdeps/unix/sysv/linux/mips/mips64/statx_cp.c rename sysdeps/unix/sysv/linux/{wordsize-64 => mips}/xstat.c (66%) create mode 100644 sysdeps/unix/sysv/linux/mips/xstatver.h create mode 100644 sysdeps/unix/sysv/linux/mknod.c create mode 100644 sysdeps/unix/sysv/linux/mknodat.c rename sysdeps/unix/sysv/linux/powerpc/bits/{stat.h => struct_stat.h} (82%) delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/fxstat.c delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/fxstatat.c delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/lxstat.c delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/xstat.c create mode 100644 sysdeps/unix/sysv/linux/powerpc/xstatver.h rename sysdeps/unix/sysv/linux/s390/bits/{stat.h => struct_stat.h} (80%) delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/fxstat.c delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/fxstatat.c delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/lxstat.c delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/xstat.c create mode 100644 sysdeps/unix/sysv/linux/s390/xstatver.h delete mode 100644 sysdeps/unix/sysv/linux/sh/fxstat.c delete mode 100644 sysdeps/unix/sysv/linux/sh/fxstatat.c delete mode 100644 sysdeps/unix/sysv/linux/sh/lxstat.c delete mode 100644 sysdeps/unix/sysv/linux/sh/xstat.c rename sysdeps/unix/sysv/linux/sparc/bits/{stat.h => struct_stat.h} (72%) delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc32/fxstat.c delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc32/fxstatat.c delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc32/lxstat.c delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc32/xstat.c delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/dl-fxstatat64.c delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/fxstatat.c create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/kstat_cp.h delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/lxstat.c delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/xstat.c create mode 100644 sysdeps/unix/sysv/linux/sparc/xstatver.h create mode 100644 sysdeps/unix/sysv/linux/stat.c create mode 100644 sysdeps/unix/sysv/linux/stat64.c create mode 100644 sysdeps/unix/sysv/linux/stat_t64_cp.c rename sysdeps/unix/sysv/linux/{generic/wordsize-32/fxstatat64.c => stat_t64_cp.h} (51%) create mode 100644 sysdeps/unix/sysv/linux/struct_stat_time64.h delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/dl-fxstatat64.c delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/fxstat64.c delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/fxstatat64.c delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/lxstat64.c delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/xstat64.c rename sysdeps/unix/sysv/linux/x86/bits/{stat.h => struct_stat.h} (73%) create mode 100644 sysdeps/unix/sysv/linux/x86/xstatver.h create mode 100644 sysdeps/unix/sysv/linux/xstatover.h create mode 100644 sysdeps/unix/sysv/linux/xstatver.h