From patchwork Fri Sep 1 17:59:40 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: 22515 Received: (qmail 84771 invoked by alias); 1 Sep 2017 18:00:49 -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 84562 invoked by uid 89); 1 Sep 2017 18:00:48 -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=H*m:gmail X-HELO: mga02.intel.com X-ExtLoop1: 1 From: "H.J. Lu" To: libc-alpha@sourceware.org Subject: [PATCH 09/58] Mark internal wchar functions with attribute_hidden [BZ #18822] Date: Fri, 1 Sep 2017 10:59:40 -0700 Message-Id: <20170901180029.9527-10-hjl.tools@gmail.com> In-Reply-To: <20170901180029.9527-1-hjl.tools@gmail.com> References: <20170901180029.9527-1-hjl.tools@gmail.com> Mark internal wchar functions with attribute_hidden to allow direct access within libc.so and libc.a without using GOT nor PLT. [BZ #18822] * include/wchar.h (__wcsnlen): Add attribute_hidden. (__wcscat): Likewise. (__btowc): Likewise. (__wcrtomb): Likewise. (__mbsrtowcs): Likewise. (__wcsrtombs): Likewise. (__mbsnrtowcs): Likewise. (__wcsnrtombs): Likewise. (__wcsncpy): Likewise. (__wcpncpy): Likewise. (__wmemcpy): Likewise. (__wmempcpy): Likewise. (__wmemmove): Likewise. (__wcschrnul): Likewise. (__vfwscanf): Likewise. (__vswprintf): Likewise. (__fwprintf): Likewise. (__vfwprintf): Likewise. --- include/wchar.h | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/include/wchar.h b/include/wchar.h index eb472daefb..24b2eaa5f9 100644 --- a/include/wchar.h +++ b/include/wchar.h @@ -152,9 +152,10 @@ extern int __wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, __attribute_pure__; extern size_t __wcslen (const wchar_t *__s) __attribute_pure__; extern size_t __wcsnlen (const wchar_t *__s, size_t __maxlen) - __attribute_pure__; -extern wchar_t *__wcscat (wchar_t *dest, const wchar_t *src); -extern wint_t __btowc (int __c); + attribute_hidden __attribute_pure__; +extern wchar_t *__wcscat (wchar_t *dest, const wchar_t *src) + attribute_hidden; +extern wint_t __btowc (int __c) attribute_hidden; extern int __mbsinit (const __mbstate_t *__ps); extern size_t __mbrtowc (wchar_t *__restrict __pwc, const char *__restrict __s, size_t __n, @@ -162,34 +163,39 @@ extern size_t __mbrtowc (wchar_t *__restrict __pwc, libc_hidden_proto (__mbrtowc) libc_hidden_proto (__mbrlen) extern size_t __wcrtomb (char *__restrict __s, wchar_t __wc, - __mbstate_t *__restrict __ps); + __mbstate_t *__restrict __ps) attribute_hidden; extern size_t __mbsrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, - size_t __len, __mbstate_t *__restrict __ps); + size_t __len, __mbstate_t *__restrict __ps) + attribute_hidden; extern size_t __wcsrtombs (char *__restrict __dst, const wchar_t **__restrict __src, - size_t __len, __mbstate_t *__restrict __ps); + size_t __len, __mbstate_t *__restrict __ps) + attribute_hidden; extern size_t __mbsnrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, - size_t __len, __mbstate_t *__restrict __ps); + size_t __len, __mbstate_t *__restrict __ps) + attribute_hidden; extern size_t __wcsnrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, - __mbstate_t *__restrict __ps); + __mbstate_t *__restrict __ps) + attribute_hidden; extern wchar_t *__wcsncpy (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, size_t __n); + const wchar_t *__restrict __src, size_t __n) + attribute_hidden; extern wchar_t *__wcpcpy (wchar_t *__dest, const wchar_t *__src); extern wchar_t *__wcpncpy (wchar_t *__dest, const wchar_t *__src, - size_t __n); + size_t __n) attribute_hidden; extern wchar_t *__wmemcpy (wchar_t *__s1, const wchar_t *s2, - size_t __n); + size_t __n) attribute_hidden; extern wchar_t *__wmempcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, - size_t __n); + size_t __n) attribute_hidden; extern wchar_t *__wmemmove (wchar_t *__s1, const wchar_t *__s2, - size_t __n); + size_t __n) attribute_hidden; extern wchar_t *__wcschrnul (const wchar_t *__s, wchar_t __wc) - __attribute_pure__; + attribute_hidden __attribute_pure__; extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) __THROW; @@ -197,17 +203,21 @@ extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, extern int __vfwscanf (__FILE *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) + attribute_hidden /* __attribute__ ((__format__ (__wscanf__, 2, 0)) */; extern int __vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __format, __gnuc_va_list __arg) + attribute_hidden /* __attribute__ ((__format__ (__wprintf__, 3, 0))) */; extern int __fwprintf (__FILE *__restrict __s, const wchar_t *__restrict __format, ...) + attribute_hidden /* __attribute__ ((__format__ (__wprintf__, 2, 3))) */; extern int __vfwprintf (__FILE *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) + attribute_hidden /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */; extern int __vfwprintf_chk (FILE *__restrict __s, int __flag, const wchar_t *__restrict __format,