From patchwork Fri Sep 9 15:49:59 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 101819 Delivered-To: patch@linaro.org Received: by 10.140.106.11 with SMTP id d11csp415784qgf; Fri, 9 Sep 2016 08:51:01 -0700 (PDT) X-Received: by 10.98.100.73 with SMTP id y70mr7819500pfb.84.1473436261323; Fri, 09 Sep 2016 08:51:01 -0700 (PDT) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id r8si4399454pav.187.2016.09.09.08.51.01 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Sep 2016 08:51:01 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-73201-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org; spf=pass (google.com: domain of libc-alpha-return-73201-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-73201-patch=linaro.org@sourceware.org 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:mime-version:content-type; q=dns; s=default; b=HCHoe tdh4q5171ZrVNWvHKeEKZDSpIotFqS+st7SyJvT8EHbTHpGYouCxX6BKO2Vsp8UE iL2EMVQoNTuafUSad58nh/1xlTqAAjbXqgE9jCfXhBY1mncdcCjurWrGJ+PpSbYx JD15/21Fj+inFKF2Je/ufvdVH6fKsuO7xo6x3k= 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:mime-version:content-type; s=default; bh=cazgDggctvr sgKlrN94SNLo1t+g=; b=fB0R5lgYVdHplMq2CitRZIffsOkG66UMn2vqIs8tiz9 +eMkxLMWjFzR9U0V17YdMsgBPXkSUk/524gz4Wkn8iTDXvihNuJinwpV/L4L2wEU ooWXYiGlyX+Lb+X2S72f/1/lH8dPI9SHkIadQcl2aCHI5AnMGekacEYlGj4BHS3E = Received: (qmail 3506 invoked by alias); 9 Sep 2016 15:50:50 -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 3408 invoked by uid 89); 9 Sep 2016 15:50:49 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Protection, Never, 1996-2016, 19962016 X-HELO: NAM01-BY2-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; From: Yury Norov To: CC: Yury Norov Subject: [PATCH 2/2] [AARCH64] ILP32: stat syscalls Date: Fri, 9 Sep 2016 18:49:59 +0300 Message-ID: <1473436199-3305-3-git-send-email-ynorov@caviumnetworks.com> In-Reply-To: <1473436199-3305-1-git-send-email-ynorov@caviumnetworks.com> References: <1473436199-3305-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: AM3PR03CA013.eurprd03.prod.outlook.com (10.141.191.141) To CY1PR07MB2245.namprd07.prod.outlook.com (10.164.112.147) X-MS-Office365-Filtering-Correlation-Id: 8cf1f3ee-5586-4c7e-a7f3-08d3d8c90aa3 X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2245; 2:ncI0mgrb9tcspDPZatR8wOj636kBMd31acdO7QGsI2Jg3zf+GSjFuextKSI38N9sUVCY/2RiueySTVhhrDQHBxHXMxPLBnileSd5SOu3u8KlgbVPR9PDnSeyA9dyv4eHGxBTneG2y/6mgxlpBSqko4mMkfK/8k45R38hCkQn1vVyle+IfLCwADZA+VsHGxFF; 3:UYgoYZ2mgDlkX1HBGoi9RU3oLoQfU08IiGfDIeMhfZl+HP3Dt3rFGnJlK6/MMIgmJrshw50dWqweuRgfRMR6/RJxdCZdwdpCK/26X8i7mYeoWOR2jPGyUt3X5kV2+J9H X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2245; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2245; 25:L+YJx5Wa4rL628w3CH1qD14faxIF+u6KSCAlAq0TwYU4c9e8HxCD3h76UuS3vOCKDBSiafhmtaKt3y8Nc35X5mqUcWnkDuGsz1LZY0aK9LTRh3y6p49jfC5nnIxvSg8XkjiZQ5DYzr4dhtU4k6rZlHHSyST1QJqDJ6GeESJARpXAglgHDzKhgkXjeoi4Z1XzzvvowUVw8gA1rIEXiucknRyIQO2m2B+JuVCYYU7WG0qxINFpMZaVigvRTfUxhQqpGf1WPj8+We5SOLT32D3HmiQEdDLqSLxspFbgqAY8cF9/cSbHr08Ud+7lnYKsfitEBzYs2WFbyuRMhHupbeKV3ULklP0x8XNKNH7PglvrhPrZK8C1nZt2Zz+ISgPpaFcONg2nkE0DPpAPKLxjojYrBpr8hHKHErAd4zw4B8dyFQv8kAM4uXjwHsFscoFn1L/+xEbR4J37jI1g2l/+04WrCaajmf710I40nkNFmFuY9D0uorWPqDxoplMd+j03nhqYtGn6+cQYB9GSoqzayitpTXg7pf0G2M+bJKTC+E+Kg8skNt6Q+A3SSOkCyEpYIVQDIzNdSVO5YlXnfYTX0p0vHnXM4E63f7EaSwCLCNK9CoRDNXHoTDzbmx2wfsDm+so8re83HkGehuRcsV+4ZO3OC1FCq3IC1hAQiirBaf3uqk3eQf29eiYu+hlYFeuU8UVnW5H+3g6w/dZFfm7nTOT7cvii63ig3D/cttiQDDkO4wqdVkwuSlnY8fn5KrcdwjjzQZolro/K4tTQRkPQypaUpo7sUKlYu7hk1UuCECPuxUHEtuxrIbPuE/qhzppQkiPcBmen6QAuOm8kTRrGQwZHA9MckdTFlPg7WKMf0YXSDHs= X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2245; 31:LIVX5/tyZEEZvdyhLE7rthQ8BEI3sjK1/qgYgz6Efxl5M5T1eC5eI46n2UdTO7o24lzue61a/7jjiUrSsW9GFGG+WpCtGJEyvyhZnIrl9qA9qFTWTzyMb9po/J+N0i3jHHFtiJVP5yPfirYSumEfww4S6dqb6s+5nUOCHigKq7FlKtH1t/oukbFCG7ybvk9mrgQ4/G12KQ7mil5o6t/cm4xd4NuVTHmWNzA8mwBaaKA=; 20:rdiOXoXQA4eagUrrql4oSPY1rIszsTkf6oQYDBMOaUoBF8Km2SrBdMIScKBS10H1nADGqtIv9cw0e1rDxl8jGZ8Zab1Fi35EYscWW7bVruam9VOnrpoAV078fdCUZZiGged9C0FCAfEYkq6S8Vzcag7cOSxKiAX6SiyfHaBhgw8MypUuF08jJ4Edu9xMb5uLNSZuq8RjWL9I7Q+HrdYa0HcNpbk90Quap7L3I1b4aOgJxaj0OfuX4Xujt7rWFsyECHARe0xdxnk/8XUek6UPfEOwNdO2TRflDrNWXafZ3+bLlY7wir3TrakR7TxeCsMBryhjwQ6Zi/tK4iwdRC/eB9bWdOehCCrtBr/tS82E/9n8fY5LfbNu6vTocbHWelbd0B4Yz622OhKsfe3FWg+i9ytNrK7flteURzxKeskaeWZ3am8670zLKWueeK1JcnCAqg01oCQS0v/FMY89w8MXReo1X7lLJZ/v0Op9fBwf5QAvtKjA/JIoIuEwfXRwFPRkSSMeK6XlBso1Ff7yzvOdam8DhR/vSmKAvAkGfHjIWxDaWfhl98vKGPB/b0kTk/DXc3fd8LINkrLm6IeVcOe6bCcghdVN67a0H1qzsqVKeI8= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001); SRVR:CY1PR07MB2245; BCL:0; PCL:0; RULEID:; SRVR:CY1PR07MB2245; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2245; 4:jcEAb7UDnM+3kgbOGpytUe1gdtA17a7kAb6gBgpYp72VF4TZJo1G8j2xj6Jm4BJqnzf0AFRq46VMwQXjmCN13FW+kIPUT1XH2jehYb7Ekmv4+bN9qDntBNI2lBCi3UViNJubgW3eraSWLee5PE9+kgbL186te2Mb/fQlKOzyAzKgWiyJDcQzoTm95dDxKCViZJ6207DlentJYpfsKrAQ/gRtQRSwRt3Pkl2Q8IhKPCJE71a7jhFgTQ/1T+npYJOH+bkvHWza2OYubT4FpDIaSsvWDWZdOnyZih6Mtk3vf59PvlUpNXYbc/jUfGB4klOEjOpoZfr8b32XVrrtp51sC8kV3Z8nZYcaFwoj6+BRt96btKfTYawLZmvYG98Tek07sJzTFrWXkdWcxIw1JokNQzP2IC5uo2BmDSD2ePu9TXKASz/czj6O8RzzP4TIuNI3Dws0VeFBNPw2+0PaRBc/oA== X-Forefront-PRVS: 00603B7EEF X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6069001)(7916002)(40224003)(199003)(189002)(377424004)(7736002)(101416001)(81156014)(42186005)(4001430100002)(8676002)(50986999)(2351001)(229853001)(15975445007)(105586002)(5003940100001)(48376002)(68736007)(47776003)(2950100001)(77096005)(66066001)(106356001)(7846002)(305945005)(4326007)(50466002)(76176999)(19580395003)(3846002)(97736004)(450100001)(110136002)(76506005)(5660300001)(50226002)(81166006)(19580405001)(33646002)(107886002)(92566002)(2906002)(189998001)(6116002)(586003)(36756003)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR07MB2245; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2245; 23:ndYbnE0bWdmliKYSQ+jqU7AqJ00tCCpQkFuWUmUn5otABfjqXPT4wGbHMmaU6TZnD8nvsMe9gyEl3H2G9zHeTyej4DCZbf+M4MtDorVd2bYXD0qH0hY/9jScevCPg+gpapcxyrzgs7LGdN2NmgElVdyOI/M6eAGSOnAuH7V4uHZdXPuAlrF/NLnSmU5Hqjbws14vaBvYRdgSLi2rI3ulk9iYd2hYY+6ZDrTrxKmLrrWuyQB9WGg7DvG/Yq1HInxEXxzZVomXzty79Hvbm8AOATSnmP1HKJi27fT65yLeFw+Ncy9eOl83UNRQ9uiWkptcD2solWf1FS3B0bLHiRi+u7QocAd6Dm955Qj0M9vDUciLtFsoaF5mJPWiVdVXLUlQZQ8CMFlicdLS8qoTxslbVjbCGBde6P9q+Z4wwrUlS24cBAshZrWuiC4AJZapUkjaLB7dLxlAKg3O9X8N3TyDBFC1Pr6JTGPVOaIYhWLuGCN9iCRuVQN+cTqBanDGSw5nmk8/HoqxFt5O1hm2joab3ZqUFVgzxL1r0OT/n5+nnU7R4ZHCf6ic5u7/CM3NGMQAPWJ9fhJ6CYCto9C6OnHTDH8R9CFVyu+hanyWMY9hUzyBoAFUKDv8ISmoKyIF+gNbMA9JKneKLtylams0f8kA0D1s9NMyrKj8PkmupVdrljq1vzUVlo5l31Bgkb7hivkIX/9es3btfdYUlo6gynMyUUSr3EDSA/C1hi6VbFE+w2JMlqVP0VlqSHu0QVlUdnFpWxhM4O0QUGXET2/2vjqfo3m1MqCjEoVS2PPFVAdDa7HQzsLMoitOeJawAWDIBXg3n/Xb6Xz9aFzVGWShg84YHIw0UbpjYiO3RcpkrcHY/LMOa1uLNiAZuXJzYIZSoEmg4TuiRaS7LsOyKjxufCLja1fOdrA48fue59zJNE1iBIIaNy4hvegUneVFgY/Nb9XZmqMRSDNE/H+egxNz+6eu5ygw9S+D2PjtEi1hYNs1lOglj0w50UREbquh+bcyZsZbb1rkOlhQQOy6vRKz+JCNDJDZzSGOZLn8YJwOWIJjqx5gZlQcILJnte+t9sPoOp9rHuhHPZ5ugI2y4ww7PxK36e3EXqo0AyvN12K5GLJnZJjUyQyxnJhlMLr0NzaLp9sMHyRFsYL7ct+WF13pGPaEf2QB/U2NU+PQkMe9hMrIxl98yNZJT6fumu8B3ctBVhrZrYnuLJP8xPDKitPTOOYv2t8qOtnYK6l4nb7eQasBZZx3nKKDbQXDUF9Xbg/rMXgQx3RZifSaHWAhcBVcCud3TQ== X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2245; 6:DP6HFiie8yxPkhqfelfZ0IwRaG5LM7zeQ9I7sSQm3FVlbU0KhClY5qos7GC7dFo5VjnW/LYECuBHwk+T/36PJUxMsjL3Iy2yFl6zIUlMsdAmRqwrBY2NN6yuWXH6s/JNv53JfN5nX+xxZm72pezgR/rmQVmLDoIO1HUQaPWdk5Dc6D3nJ8iPyeOA3k31GfjwUF6dsz3O8A2TqgLjlQlxYbboQn8+2cDoi057MdZQKQLi9vBUBfLHXa5J0qA3NFA8qEL0sgvj6ZJuqD97BhghYa89Q2M7fyalawu9aLD9aGI=; 5:21M9AqfgAeqYYG2nIWG5z5d9UH7MIUpIXoC5zhfQWPq7d0gb/Xs40KRRqOYCb3UoihKyMbyutazs/TJK3IsOdw2kLJf7Vt8vQU/qVSEv76q7ApC8Yl0A4aCNHb/A2vG5faxS0/fnANYUh6vaVxAWNQ==; 24:OCXGa+aWsPACq3Zrpu4Njfc1kthBHJScQiAabOWIw9L6V7IhV4dHEZmjC8q0g4jVDvXhejNyKjiDDsL5rCcjzD4zHzYy1gNSBNSePpxzgFc=; 7:cWvm8vgr3KrZiGkrP95QVSVLPdwb3XuAjbx7TZ9nammClR2RluaFhuUqkJXdVf7Gp3sZE5bItmj5JXuc5jm8FvyOsVAS6GQw8NCbwyC21bpwGqaso4pHMZKrKFOnuNnyK98vfnzfHcBoUKRREdJCfHifiuADd0bggxYpgqtq3mdJEbmjGaScg1nauNyRMq7EJdGXY/aCDc75Bcs0WdwJXoxE32i1m6sDgfg9MUPs1p9yYhAFN5bVYVYUj7jhHTY3 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2016 15:50:36.3872 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2245 Implementation details: - struct stat, stat64, statfs, statfs64 layouts are taken from sysdeps/unix/sysv/linux/aarch64/bits. - statfs{,64} is identical to lp64, so corresponding syscalls are wired to lp64 handlers in kernel, and implemented in custom files in glibc. - struct stat has broken st_ino field (legacy from arm32), so it's handled in corresponding header in a way to make this structure identical to struct stat64. - xstat{,64} and lxstat{,64} are unified and taken from sysdeps/unix/sysv/linux/generic/wordsize32. - other syscalls are taken from sysdeps/unix/sysv/linux. - XSTAT_IS_XSTAT64 is defined to use the same implementations for syscalls. - STAT_IS_KERNEL_STAT is defined, and _STAT_VER is defined to _STAT_VER_KERNEL for ilp32 to bypass __xstat_conv(). - __NR_stat, __NR_fstat, __NR_newfstatat and __NR_lstat are redefined to symbols that linux exports. 2016-09-09: Yury Norov * sysdeps/unix/sysv/linux/aarch64/bits/stat.h: New file * sysdeps/unix/sysv/linux/aarch64/bits/statfs.h: Likewise * sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs.c: Likewise * sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c: Likewise * sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat.c: Likewise * sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat64.c: Likewise * sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat.c: Likewise * sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat64.c: Likewise * sysdeps/unix/sysv/linux/aarch64/ilp32/kernel_stat.h: Likewise * sysdeps/unix/sysv/linux/aarch64/ilp32/statfs.c: Likewise * sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c: Likewise Signed-off-by: Yury Norov --- sysdeps/unix/sysv/linux/aarch64/bits/stat.h | 166 +++++++++++++++++++++ sysdeps/unix/sysv/linux/aarch64/bits/statfs.h | 60 ++++++++ sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs.c | 1 + sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c | 35 +++++ sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat.c | 1 + sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat64.c | 1 + sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat.c | 1 + sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat64.c | 1 + .../unix/sysv/linux/aarch64/ilp32/kernel_stat.h | 7 + sysdeps/unix/sysv/linux/aarch64/ilp32/statfs.c | 1 + sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c | 38 +++++ 11 files changed, 312 insertions(+) create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/stat.h create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/statfs.h create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat64.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat64.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/kernel_stat.h create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/statfs.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c -- 2.7.4 diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/stat.h b/sysdeps/unix/sysv/linux/aarch64/bits/stat.h new file mode 100644 index 0000000..adf8f4e --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/bits/stat.h @@ -0,0 +1,166 @@ +/* Structs stat and stat64 + Copyright (C) 1992-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 + . */ + +#if !defined _SYS_STAT_H && !defined _FCNTL_H +# error "Never include directly; use instead." +#endif + +#ifndef _BITS_STAT_H +#define _BITS_STAT_H 1 + +/* Versions of the `struct stat' data structure. */ +#define _STAT_VER_LINUX_OLD 1 +#define _STAT_VER_KERNEL 1 +#define _STAT_VER_SVR4 2 +#define _STAT_VER_LINUX 3 +# ifdef __ILP32__ +# define _STAT_VER _STAT_VER_KERNEL +# else +# define _STAT_VER _STAT_VER_LINUX /* The one defined below. */ +# endif + +/* Versions of the `xmknod' interface. */ +#define _MKNOD_VER_LINUX 1 +#define _MKNOD_VER_SVR4 2 +#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */ + + +struct stat + { + __dev_t st_dev; /* Device. */ +#ifdef __LP64__ + __ino_t st_ino; /* File serial number. */ +#else + unsigned short int __pad1; + unsigned int __st_ino; /* 32bit file serial number. */ +#endif + __mode_t st_mode; /* File mode. */ + __nlink_t st_nlink; /* Link count. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + __dev_t st_rdev; /* Device number, if device. */ + unsigned short int __pad2; + __off_t st_size; /* Size of file, in bytes. */ + __blksize_t st_blksize; /* Optimal block size for I/O. */ + + __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */ +#ifdef __USE_XOPEN2K8 + /* Nanosecond resolution timestamps are stored in a format + equivalent to 'struct timespec'. This is the type used + whenever possible but the Unix namespace rules do not allow the + identifier 'timespec' to appear in the header. + Therefore we have to handle the use of this header in strictly + standard-compliant sources special. */ + struct timespec st_atim; /* Time of last access. */ + struct timespec st_mtim; /* Time of last modification. */ + struct timespec st_ctim; /* Time of last status change. */ +# define st_atime st_atim.tv_sec /* Backward compatibility. */ +# define st_mtime st_mtim.tv_sec +# define st_ctime st_ctim.tv_sec +#else + __time_t st_atime; /* Time of last access. */ + unsigned long int st_atimensec; /* Nscecs of last access. */ + __time_t st_mtime; /* Time of last modification. */ + unsigned long int st_mtimensec; /* Nsecs of last modification. */ + __time_t st_ctime; /* Time of last status change. */ + unsigned long int st_ctimensec; /* Nsecs of last status change. */ +#endif +#ifdef __LP64__ + int __glibc_reserved[2]; +#else + __ino64_t st_ino; /* File serial number. */ +#endif + }; + +struct stat64 + { + __dev_t st_dev; /* Device. */ + unsigned int __pad1; + + unsigned int __st_ino; /* 32bit file serial number. */ + __mode_t st_mode; /* File mode. */ + __nlink_t st_nlink; /* Link count. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + __dev_t st_rdev; /* Device number, if device. */ + unsigned int __pad2; + __off64_t st_size; /* Size of file, in bytes. */ + __blksize_t st_blksize; /* Optimal block size for I/O. */ + + __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ +# ifdef __USE_XOPEN2K8 + /* Nanosecond resolution timestamps are stored in a format + equivalent to 'struct timespec'. This is the type used + whenever possible but the Unix namespace rules do not allow the + identifier 'timespec' to appear in the header. + Therefore we have to handle the use of this header in strictly + standard-compliant sources special. */ + struct timespec st_atim; /* Time of last access. */ + struct timespec st_mtim; /* Time of last modification. */ + struct timespec st_ctim; /* Time of last status change. */ +# else + __time_t st_atime; /* Time of last access. */ + unsigned long int st_atimensec; /* Nscecs of last access. */ + __time_t st_mtime; /* Time of last modification. */ + unsigned long int st_mtimensec; /* Nsecs of last modification. */ + __time_t st_ctime; /* Time of last status change. */ + unsigned long int st_ctimensec; /* Nsecs of last status change. */ +# endif + __ino64_t st_ino; /* File serial number. */ + }; + +/* Tell code we have these members. */ +#define _STATBUF_ST_BLKSIZE +#define _STATBUF_ST_RDEV +/* Nanosecond resolution time values are supported. */ +#define _STATBUF_ST_NSEC + +/* Encoding of the file mode. */ + +#define __S_IFMT 0170000 /* These bits determine file type. */ + +/* File types. */ +#define __S_IFDIR 0040000 /* Directory. */ +#define __S_IFCHR 0020000 /* Character device. */ +#define __S_IFBLK 0060000 /* Block device. */ +#define __S_IFREG 0100000 /* Regular file. */ +#define __S_IFIFO 0010000 /* FIFO. */ +#define __S_IFLNK 0120000 /* Symbolic link. */ +#define __S_IFSOCK 0140000 /* Socket. */ + +/* POSIX.1b objects. Note that these macros always evaluate to zero. But + they do it by enforcing the correct use of the macros. */ +#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode) +#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode) +#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode) + +/* Protection bits. */ + +#define __S_ISUID 04000 /* Set user ID on execution. */ +#define __S_ISGID 02000 /* Set group ID on execution. */ +#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */ +#define __S_IREAD 0400 /* Read by owner. */ +#define __S_IWRITE 0200 /* Write by owner. */ +#define __S_IEXEC 0100 /* Execute by owner. */ + +#ifdef __USE_ATFILE +# define UTIME_NOW ((1l << 30) - 1l) +# define UTIME_OMIT ((1l << 30) - 2l) +#endif + +#endif /* bits/stat.h */ diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/statfs.h b/sysdeps/unix/sysv/linux/aarch64/bits/statfs.h new file mode 100644 index 0000000..c37dc6d --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/bits/statfs.h @@ -0,0 +1,60 @@ +/* Structures statfs and statfs64 + 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 + . */ + +#ifndef _SYS_STATFS_H +# error "Never include directly; use instead." +#endif + +#include + +struct statfs + { + __fsword_t f_type; + __fsword_t f_bsize; + __fsblkcnt_t f_blocks; + __fsblkcnt_t f_bfree; + __fsblkcnt_t f_bavail; + __fsfilcnt_t f_files; + __fsfilcnt_t f_ffree; + __fsid_t f_fsid; + __fsword_t f_namelen; + __fsword_t f_frsize; + __fsword_t f_flags; + __fsword_t f_spare[4]; + }; + +struct statfs64 + { + __fsword_t f_type; + __fsword_t f_bsize; + __fsblkcnt64_t f_blocks; + __fsblkcnt64_t f_bfree; + __fsblkcnt64_t f_bavail; + __fsfilcnt64_t f_files; + __fsfilcnt64_t f_ffree; + __fsid_t f_fsid; + __fsword_t f_namelen; + __fsword_t f_frsize; + __fsword_t f_flags; + __fsword_t f_spare[4]; + }; + +/* Tell code we have these members. */ +#define _STATFS_F_NAMELEN +#define _STATFS_F_FRSIZE +#define _STATFS_F_FLAGS diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs.c new file mode 100644 index 0000000..d213179 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs.c @@ -0,0 +1 @@ +/* See sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c */ diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c new file mode 100644 index 0000000..ad5675d --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c @@ -0,0 +1,35 @@ +/* Return information about the filesystem on which FD resides. + Copyright (C) 1996-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 + . */ +#define __fstatfs __statfs_disable +#define fstatfs statfs_disable + +#include +#include +#include + +int +__fstatfs64 (int fd, struct statfs64 *buf) +{ + return INLINE_SYSCALL (fstatfs64, 2, fd, buf); +} + +#undef __fstatfs +#undef fstatfs +strong_alias (__fstatfs64, __fstatfs) +weak_alias (__fstatfs64, fstatfs64) +weak_alias (__fstatfs64, fstatfs) diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat.c new file mode 100644 index 0000000..6fa13ad --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat64.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat64.c new file mode 100644 index 0000000..ec28959 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat64.c @@ -0,0 +1 @@ +/* See sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat.c */ diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat.c new file mode 100644 index 0000000..72806b9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat64.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat64.c new file mode 100644 index 0000000..0bc494f --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat64.c @@ -0,0 +1 @@ +/* See sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat.c */ diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/kernel_stat.h b/sysdeps/unix/sysv/linux/aarch64/ilp32/kernel_stat.h new file mode 100644 index 0000000..ff80758 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/kernel_stat.h @@ -0,0 +1,7 @@ +#define __NR_stat __NR_stat64 +#define __NR_fstat __NR_fstat64 +#define __NR_newfstatat __NR_fstatat64 +#define __NR_lstat __NR_lstat64 + +#define XSTAT_IS_XSTAT64 1 +#define STAT_IS_KERNEL_STAT diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/statfs.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/statfs.c new file mode 100644 index 0000000..69d7336 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/statfs.c @@ -0,0 +1 @@ +/* See sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c */ diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c new file mode 100644 index 0000000..66772a8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c @@ -0,0 +1,38 @@ +/* Return information about the filesystem on which FILE resides. + + Copyright (C) 2011-2015 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 + . */ +#define __statfs __statfs_disable +#define statfs statfs_disable + +#include +#include +#include + +int +__statfs64 (const char *file, struct statfs64 *buf) +{ + return INLINE_SYSCALL (statfs64, 2, file, buf); +} + +#undef __statfs +#undef statfs +weak_alias (__statfs64, statfs64) +strong_alias (__statfs64, __statfs) +libc_hidden_ver (__statfs64, __statfs) +weak_alias (__statfs64, statfs)