From patchwork Sun Aug 20 18:58:43 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: 22249 Received: (qmail 73161 invoked by alias); 20 Aug 2017 18:58:51 -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 73051 invoked by uid 89); 20 Aug 2017 18:58:49 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 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, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-pg0-f46.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition:user-agent; bh=u6eg1mVuGFeRa7IdOdzj1Qt4m2XO08+a/SLq6QLjB3E=; b=lBmp3d2jpjSRWMma6pPDWbFze/JbB0ZudMoVU6mu3HvHs92fk2K9iBQu3M1zX0RFxk GvJKMOaqim7bq1hAegn03x4TE1b9PRA6KbFbYTocXyie0NUUvOq96IR0qli4N1YB2BHs bLghggcTDjcTm5kZYaG6w+3p97sCKq0+wCONjeVu0tN5NP54v5YmxMbgIifUG4la0szB qh0IFdgAOG/O1IPuWbRmYr6ByFVc2fv95gIU2cpyqkTwHca0fNzaw/SvzkYlx4tnaz+t 2gvhHix+Lk29+BcSoWw0Aug40YKaFBIIipCAWJLEtPm3Iwc2NnTA+Z6j84xCL0rHXuLV wU0w== X-Gm-Message-State: AHYfb5jzlJit4frZpi1rkeN4RuY4xPqIHktRWyuy/MpEZur7tByUW8O6 CsKIUJs5NGAhBW9h X-Received: by 10.84.143.165 with SMTP id 34mr16728940plz.104.1503255524831; Sun, 20 Aug 2017 11:58:44 -0700 (PDT) Date: Sun, 20 Aug 2017 11:58:43 -0700 From: "H.J. Lu" To: GNU C Library Subject: RFA: [PATCH] Hide internal __ioctl function [BZ #18822] Message-ID: <20170820185843.GA7287@gmail.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.8.3 (2017-05-23) Hide internal __ioctl function to allow direct access within libc.so and libc.a without using GOT nor PLT. __GI___ioctl is defined when sysdeps/unix/syscalls.list is used to generate ioctl. Otherwise libc_hidden_def is needed explicitly. Could someone please test it on hurd, aarch64, mips/mips64/n64, powerpc and tilegx. Thanks. H.J. --- [BZ #18822] * include/sys/ioctl.h (__ioctl): Add libc_hidden_proto. * misc/ioctl.c (__ioctl): Add libc_hidden_def. * sysdeps/mach/hurd/ioctl.c (__ioctl): Likewise. * sysdeps/unix/sysv/linux/aarch64/ioctl.S (__ioctl): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S (__ioctl): Likewise. * sysdeps/unix/sysv/linux/powerpc/ioctl.c (__ioctl): Likewise. * sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S (__ioctl): Likewise. --- include/sys/ioctl.h | 1 + misc/ioctl.c | 1 + sysdeps/mach/hurd/ioctl.c | 1 + sysdeps/unix/sysv/linux/aarch64/ioctl.S | 1 + sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S | 1 + sysdeps/unix/sysv/linux/powerpc/ioctl.c | 1 + sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S | 1 + 7 files changed, 7 insertions(+) diff --git a/include/sys/ioctl.h b/include/sys/ioctl.h index bfc6909dbc..dd7c3c7c9c 100644 --- a/include/sys/ioctl.h +++ b/include/sys/ioctl.h @@ -5,6 +5,7 @@ /* Now define the internal interfaces. */ extern int __ioctl (int __fd, unsigned long int __request, ...); +libc_hidden_proto (__ioctl) # endif /* !_ISOMAC */ #endif diff --git a/misc/ioctl.c b/misc/ioctl.c index 9b90102544..7e1c8cc4d7 100644 --- a/misc/ioctl.c +++ b/misc/ioctl.c @@ -28,4 +28,5 @@ __ioctl (int fd, unsigned long int request, ...) } stub_warning (ioctl) +libc_hidden_def (__ioctl) weak_alias (__ioctl, ioctl) diff --git a/sysdeps/mach/hurd/ioctl.c b/sysdeps/mach/hurd/ioctl.c index 7ce521c4fa..d6b4583a6f 100644 --- a/sysdeps/mach/hurd/ioctl.c +++ b/sysdeps/mach/hurd/ioctl.c @@ -323,4 +323,5 @@ __ioctl (int fd, unsigned long int request, ...) } } +libc_hidden_def (__ioctl) weak_alias (__ioctl, ioctl) diff --git a/sysdeps/unix/sysv/linux/aarch64/ioctl.S b/sysdeps/unix/sysv/linux/aarch64/ioctl.S index 866d6ef12d..61b3804e1b 100644 --- a/sysdeps/unix/sysv/linux/aarch64/ioctl.S +++ b/sysdeps/unix/sysv/linux/aarch64/ioctl.S @@ -28,4 +28,5 @@ ENTRY(__ioctl) ret PSEUDO_END (__ioctl) +libc_hidden_def (__ioctl) weak_alias (__ioctl, ioctl) diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S b/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S index ee5d11d240..54d186666d 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S @@ -38,4 +38,5 @@ L(error): PSEUDO_END (__ioctl) +libc_hidden_def (__ioctl) weak_alias (__ioctl, ioctl) diff --git a/sysdeps/unix/sysv/linux/powerpc/ioctl.c b/sysdeps/unix/sysv/linux/powerpc/ioctl.c index 1437d1dccc..9efccbd2c5 100644 --- a/sysdeps/unix/sysv/linux/powerpc/ioctl.c +++ b/sysdeps/unix/sysv/linux/powerpc/ioctl.c @@ -61,4 +61,5 @@ __ioctl (int fd, unsigned long int request, ...) return result; } +libc_hidden_def (__ioctl) weak_alias (__ioctl, ioctl) diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S b/sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S index e2bf44c75d..43f956399e 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S +++ b/sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S @@ -38,4 +38,5 @@ ENTRY (__ioctl) BNEZ r1, 0f jrp lr PSEUDO_END (__ioctl) +libc_hidden_def (__ioctl) weak_alias (__ioctl, ioctl)