From patchwork Fri Sep 1 17:59:51 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: 808885 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-84076-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="PG8Pllcm"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xkRyK6XJrz9s3w for ; Sat, 2 Sep 2017 04:06:33 +1000 (AEST) 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:subject:date:message-id:in-reply-to :references; q=dns; s=default; b=g37bGH26FiVI1wS3rgYtAOOGXELckcp VDrsPaKZiXdltpatRMCd6m/fCoXubypcAWlSORwfCedBTAmG+pR4iHy/CYyBs+OE ytmuv34QFFQIqVRqIrOjNqkT+fUOhwYdGR5YnLuAbXYm7RThEoUQl6KBV9xA9b/s Zwy85R34eeBI= 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:subject:date:message-id:in-reply-to :references; s=default; bh=iyyBnJ2obpqPu/IOvzTq7up+1GI=; b=PG8Pl lcmp1ErNUHBtnCeAXIjyUtcnUUSZPCr7IV3D/h74elzWZlXYjKPcdsPrJ4qR13Uj hk7xuHO4nL/2nhTIbO9uNTg0Ok1fLYO/8BFm2cq/UidYNWpPyUP1o3lohz+eL3xB DZfDrEBpymzAg2yMiRhKzf1l7FhorPZVAAZBvY= Received: (qmail 87627 invoked by alias); 1 Sep 2017 18:01:02 -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 87581 invoked by uid 89); 1 Sep 2017 18:01:02 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.2 required=5.0 tests=BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_SOFTFAIL autolearn=ham version=3.3.2 spammy= X-HELO: mga02.intel.com X-ExtLoop1: 1 From: "H.J. Lu" To: libc-alpha@sourceware.org Subject: [PATCH 20/58] Hide internal regex functions [BZ #18822] Date: Fri, 1 Sep 2017 10:59:51 -0700 Message-Id: <20170901180029.9527-21-hjl.tools@gmail.com> In-Reply-To: <20170901180029.9527-1-hjl.tools@gmail.com> References: <20170901180029.9527-1-hjl.tools@gmail.com> Hide internal regex functions to allow direct access within libc.so and libc.a without using GOT nor PLT. [BZ #18822] * include/regex.h (__re_compile_fastmap): Add attribute_hidden. (__regcomp): Add libc_hidden_proto. (__regexec): Likewise. (__regfree): Likewise. * posix/regcomp.c (__regcomp): Add libc_hidden_def. (__regfree): Likewise. * posix/regexec.c (__regexec): Likewise. --- include/regex.h | 6 +++++- posix/regcomp.c | 2 ++ posix/regexec.c | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/regex.h b/include/regex.h index fd4beeff3d..24eca2c297 100644 --- a/include/regex.h +++ b/include/regex.h @@ -8,7 +8,8 @@ extern reg_syntax_t __re_set_syntax (reg_syntax_t syntax); extern const char *__re_compile_pattern (const char *pattern, size_t length, struct re_pattern_buffer *buffer); -extern int __re_compile_fastmap (struct re_pattern_buffer *buffer); +extern int __re_compile_fastmap (struct re_pattern_buffer *buffer) + attribute_hidden; extern int __re_search (struct re_pattern_buffer *buffer, const char *string, int length, int start, int range, @@ -33,13 +34,16 @@ extern void __re_set_registers unsigned num_regs, regoff_t *starts, regoff_t *ends); extern int __regcomp (regex_t *__preg, const char *__pattern, int __cflags); +libc_hidden_proto (__regcomp) extern int __regexec (const regex_t *__preg, const char *__string, size_t __nmatch, regmatch_t __pmatch[], int __eflags); +libc_hidden_proto (__regexec) extern size_t __regerror (int __errcode, const regex_t *__preg, char *__errbuf, size_t __errbuf_size); extern void __regfree (regex_t *__preg); +libc_hidden_proto (__regfree) #endif #endif diff --git a/posix/regcomp.c b/posix/regcomp.c index a5b46139a9..871ae2ffab 100644 --- a/posix/regcomp.c +++ b/posix/regcomp.c @@ -517,6 +517,7 @@ regcomp (regex_t *__restrict preg, const char *__restrict pattern, int cflags) return (int) ret; } #ifdef _LIBC +libc_hidden_def (__regcomp) weak_alias (__regcomp, regcomp) #endif @@ -644,6 +645,7 @@ regfree (regex_t *preg) preg->translate = NULL; } #ifdef _LIBC +libc_hidden_def (__regfree) weak_alias (__regfree, regfree) #endif diff --git a/posix/regexec.c b/posix/regexec.c index f46b1f71ca..a96d86d431 100644 --- a/posix/regexec.c +++ b/posix/regexec.c @@ -224,6 +224,8 @@ regexec (const regex_t *__restrict preg, const char *__restrict string, } #ifdef _LIBC +libc_hidden_def (__regexec) + # include versioned_symbol (libc, __regexec, regexec, GLIBC_2_3_4);