From patchwork Fri Aug 18 15:45:15 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 22217 Received: (qmail 49556 invoked by alias); 18 Aug 2017 15:45:32 -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 49057 invoked by uid 89); 18 Aug 2017 15:45:27 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.0 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-oi0-f67.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=zY9tBgfNRtQZkfGOSPlelKvcDgbCUowKjFq97j/k62E=; b=kz5Kbb0lO9OxrwrIaIKAprXUQRzOJ22NZN2+NfURAhH+0da2rc8kiCoHGPWEUN2NmN JMyHh8z1tO1lZBRjLl7foyhE9aG6sU3+NhdkmZagFuzECqaIcNS7K+i4Mi6E5cZ2sFHo M7VfZaB+oOhcNVuOwtzOrGO9uc5mqlD4nDwi87eCB0Mem2XvRdWXUW0T5on8itX2uieN 8kWzYAlGyQSBsALCbm+BVGwrQ7bYK4VPEGADDkS2qNS6zLjXilyq7CdUw5H4mye2seTU 04F34ju1/24LrME+cHYg5xscPhg61Zvmbc5qBSzSaFgqH+5aRK79O8W4z+YYneWBvDVj sUqA== X-Gm-Message-State: AHYfb5h99IGqb6+9onm9MFN/wClphN2NLj65dXj1NxX1bp7ys8T7DmIm ADGF8UO0AIW+EwpCGhGoLng7YZQsdw== X-Received: by 10.202.81.68 with SMTP id f65mr12393737oib.2.1503071116538; Fri, 18 Aug 2017 08:45:16 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <62c72214-b204-d735-5996-908e72d8bc32@linaro.org> References: <20170817205809.GA7760@gmail.com> <1007f108-dd4f-faf8-eeea-864c2a830d2c@redhat.com> <2bd60469-42d8-b483-861e-8d79b281bd01@redhat.com> <62c72214-b204-d735-5996-908e72d8bc32@linaro.org> From: "H.J. Lu" Date: Fri, 18 Aug 2017 08:45:15 -0700 Message-ID: Subject: Re: [PATCH 2/4] Mark __internal_statvfs[64] with attribute_hidden [BZ #18822] To: Adhemerval Zanella Cc: GNU C Library On Fri, Aug 18, 2017 at 6:24 AM, Adhemerval Zanella wrote: > > > On 18/08/2017 10:19, Florian Weimer wrote: >> On 08/18/2017 03:15 PM, H.J. Lu wrote: >>> On Fri, Aug 18, 2017 at 5:55 AM, Florian Weimer wrote: >>>> On 08/17/2017 10:58 PM, H.J. Lu wrote: >>>>> Mark __internal_statvfs[64] with attribute_hidden to allow direct access >>>>> to them within libc.so and libc.a without using GOT nor PLT. >>>>> >>>>> Tested on i686 and x86-64. OK for master? >>>> >>>> This is a bit odd because the include/ headers are supposed to be >>>> generic, and the declarations you add are Linux-specific. In the past, >>>> we would have added a Linux-specific header under >>>> sysdeps/unix/sysv/linux for that. >>>> >>>> I don't have a strong opinion either way. >>>> >>> >>> Header files under include override both generic and non-generic header >>> files. __KERNEL_STRICT_NAMES is another example. >> >> Right. I'm sure your patch works as intended (at least on most >> architectures). It's just a matter of policy to what extent we want to >> uphold the fiction that upstream glibc supports more than just Linux. > > I also think it should be on a Linux only header, mostly for organization. Here is the updated patch with a new header file, sysdeps/unix/sysv/linux/internal_statvfs.h OK for master? Thanks. From 48388138143a01bf3031a3d0d43351f739c20ac2 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 17 Aug 2017 12:35:02 -0700 Subject: [PATCH] Mark __internal_statvfs[64] with attribute_hidden [BZ #18822] Mark __internal_statvfs[64] with attribute_hidden to allow direct access to them within libc.so and libc.a without using GOT nor PLT. [BZ #18822] * sysdeps/unix/sysv/linux/fstatvfs.c: Include "internal_statvfs.h" instead of . (__internal_statvfs): Removed. * sysdeps/unix/sysv/linux/fstatvfs64.c Include "internal_statvfs.h" instead of . (__internal_statvfs64): Removed. * sysdeps/unix/sysv/linux/internal_statvfs.c: Include "internal_statvfs.h" instead of . * sysdeps/unix/sysv/linux/internal_statvfs.h: New file. * sysdeps/unix/sysv/linux/statvfs.c Include "internal_statvfs.h" instead of . (__internal_statvfs): Removed. * sysdeps/unix/sysv/linux/statvfs64.c Include "internal_statvfs.h" instead of . (__internal_statvfs64): Removed. --- sysdeps/unix/sysv/linux/fstatvfs.c | 6 +----- sysdeps/unix/sysv/linux/fstatvfs64.c | 7 +------ sysdeps/unix/sysv/linux/internal_statvfs.c | 2 +- sysdeps/unix/sysv/linux/internal_statvfs.h | 26 ++++++++++++++++++++++++++ sysdeps/unix/sysv/linux/statvfs.c | 6 +----- sysdeps/unix/sysv/linux/statvfs64.c | 7 +------ 6 files changed, 31 insertions(+), 23 deletions(-) create mode 100644 sysdeps/unix/sysv/linux/internal_statvfs.h diff --git a/sysdeps/unix/sysv/linux/fstatvfs.c b/sysdeps/unix/sysv/linux/fstatvfs.c index e07a5b9f3d..1b2f279291 100644 --- a/sysdeps/unix/sysv/linux/fstatvfs.c +++ b/sysdeps/unix/sysv/linux/fstatvfs.c @@ -19,11 +19,7 @@ #include #include #include -#include - -extern void __internal_statvfs (const char *name, struct statvfs *buf, - struct statfs *fsbuf, int fd); - +#include "internal_statvfs.h" int __fstatvfs (int fd, struct statvfs *buf) diff --git a/sysdeps/unix/sysv/linux/fstatvfs64.c b/sysdeps/unix/sysv/linux/fstatvfs64.c index 02a0d7ee42..c923208ea8 100644 --- a/sysdeps/unix/sysv/linux/fstatvfs64.c +++ b/sysdeps/unix/sysv/linux/fstatvfs64.c @@ -20,14 +20,9 @@ #include #include #include -#include +#include "internal_statvfs.h" #include - -extern void __internal_statvfs64 (const char *name, struct statvfs64 *buf, - struct statfs64 *fsbuf, int fd); - - /* Return information about the filesystem on which FD resides. */ int __fstatvfs64 (int fd, struct statvfs64 *buf) diff --git a/sysdeps/unix/sysv/linux/internal_statvfs.c b/sysdeps/unix/sysv/linux/internal_statvfs.c index 9a17ca5c17..0a8dc35e16 100644 --- a/sysdeps/unix/sysv/linux/internal_statvfs.c +++ b/sysdeps/unix/sysv/linux/internal_statvfs.c @@ -26,7 +26,7 @@ #include #include #include -#include +#include "internal_statvfs.h" #include "linux_fsinfo.h" #include diff --git a/sysdeps/unix/sysv/linux/internal_statvfs.h b/sysdeps/unix/sysv/linux/internal_statvfs.h new file mode 100644 index 0000000000..1762bbc6c6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/internal_statvfs.h @@ -0,0 +1,26 @@ +/* Internal statvfs/statvfs64 function prototypes. + Copyright (C) 2017 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 + +extern void __internal_statvfs (const char *name, struct statvfs *buf, + struct statfs *fsbuf, int fd) + attribute_hidden; +extern void __internal_statvfs64 (const char *name, struct statvfs64 *buf, + struct statfs64 *fsbuf, int fd) + attribute_hidden; diff --git a/sysdeps/unix/sysv/linux/statvfs.c b/sysdeps/unix/sysv/linux/statvfs.c index 744336e33b..1edf1acca9 100644 --- a/sysdeps/unix/sysv/linux/statvfs.c +++ b/sysdeps/unix/sysv/linux/statvfs.c @@ -19,11 +19,7 @@ #include #include #include -#include - -extern void __internal_statvfs (const char *name, struct statvfs *buf, - struct statfs *fsbuf, int fd); - +#include "internal_statvfs.h" int __statvfs (const char *file, struct statvfs *buf) diff --git a/sysdeps/unix/sysv/linux/statvfs64.c b/sysdeps/unix/sysv/linux/statvfs64.c index a89f720b38..005495fa20 100644 --- a/sysdeps/unix/sysv/linux/statvfs64.c +++ b/sysdeps/unix/sysv/linux/statvfs64.c @@ -21,14 +21,9 @@ #include #include #include -#include +#include "internal_statvfs.h" #include - -extern void __internal_statvfs64 (const char *name, struct statvfs64 *buf, - struct statfs64 *fsbuf, int fd); - - /* Return information about the filesystem on which FILE resides. */ int __statvfs64 (const char *file, struct statvfs64 *buf) -- 2.13.5