From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from beige.pear.relay.mailchannels.net (beige.pear.relay.mailchannels.net [23.83.216.16]) by sourceware.org (Postfix) with ESMTPS id 0C7A83870F30 for ; Fri, 30 Jun 2023 15:17:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0C7A83870F30 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gotplt.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gotplt.org X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id CFC4C641786; Fri, 30 Jun 2023 15:17:06 +0000 (UTC) Received: from pdx1-sub0-mail-a286.dreamhost.com (unknown [127.0.0.6]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 329C064180C; Fri, 30 Jun 2023 15:17:05 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1688138225; a=rsa-sha256; cv=none; b=rF9DcKUE9pi2afuuwV1yxv2ZLCZYsG0iciWVREaglypVWaSlz0eQpla6M9SfemQKBDNm+p ECL5TpJ9z9Qm3Hi40SmSkywSFron6IbGQNyaF+Ttwvvnd0yuUH4OHR/Bfkrg0v86WXs0Mo ax1V8+5Zkk4fLAJlLNy1amGjxF79vYkQtcUpoaWt7ehZgrUnqI1CPVEvtMVMU8SMUOKd1U wrZWx3CBGXJtY7GGon+sXfu4HphUKyJfUD6FDEVzLE+B2I0e3lLneJxjTiumUNif0/q8Vd 1Fv2KVtCYH0jwHQw+LscmzuIX1gx2tVyiT+UOwVmhwQ744oPC7tJ2uEK9dJEkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1688138225; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=eTeIac3ee4x5LM2kK4Bq09O/bB4l9OKuBF5LvuKHJ4I=; b=8wmEzvy33DXKO5SwTN0iMYkQzQ9uK0UCRrIJsD85AReVevWj5w/BedHG98r+OVs1N9vnXu 8YNFLKjZvaAlGP9jne6IVKBzGXU/5Tl4htyP7Z7Chme8Z4OFQBVqYlzwtX1Db2Py78Mb2V hCLVsyuELKyn3XvMq9EoT6LGhcoECdoANAr8PzqI/vo4gN2+0ZRalh9ec2HstmxRE0k4AU OX3tdvePbTdAjB2IpyiHv3N13Rg4cd3v5aqAJjDV8Yix06QZnxgq7KigtdZyGnCxPVsxGo WKAf9NjyA0qGFk92j0t4FVu3dm0sHAA1trSHeIpL1L7QE07PGUR1cqe7Y/aDJw== ARC-Authentication-Results: i=1; rspamd-9fcc56855-gcssm; auth=pass smtp.auth=dreamhost smtp.mailfrom=siddhesh@gotplt.org X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org X-MC-Relay: Good X-MailChannels-SenderId: dreamhost|x-authsender|siddhesh@gotplt.org X-MailChannels-Auth-Id: dreamhost X-Daffy-Arithmetic: 3ff5d3535a2eeae4_1688138226654_3415568974 X-MC-Loop-Signature: 1688138226654:2219145502 X-MC-Ingress-Time: 1688138226654 Received: from pdx1-sub0-mail-a286.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.116.217.230 (trex/6.9.1); Fri, 30 Jun 2023 15:17:06 +0000 Received: from [192.168.0.182] (bras-vprn-toroon4834w-lp130-09-174-91-45-44.dsl.bell.ca [174.91.45.44]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) (Authenticated sender: siddhesh@gotplt.org) by pdx1-sub0-mail-a286.dreamhost.com (Postfix) with ESMTPSA id 4QszSc5j2rz7v; Fri, 30 Jun 2023 08:17:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gotplt.org; s=dreamhost; t=1688138225; bh=eTeIac3ee4x5LM2kK4Bq09O/bB4l9OKuBF5LvuKHJ4I=; h=Date:Subject:To:From:Content-Type:Content-Transfer-Encoding; b=yDFTOgzPnIx60Vpf2SC2ScKl/6++1VCxDGAoJQ7+Kln8sFBZESdK1HoE/Z2UDDzfe FBLOO+P7DTYDYmzL26kyLZkDnuYe38urqd0kS/pwLOcAHMCcvC0Sfzq9yxfUuj5EeL kgUhk8SHWivRjR+/wJLbQSG7B/vzig1AwDzztCuVnD2SzkqFOdcnqqmjzgjpu2B8or JRWNgRMkt3oUGC0bJX0Go/pYV6Lj73u2NUtAj0DSB34sTRfJssD689qeWzbupa2nXk mt6CGxKbB71TacdfNSsYncbDghfickWweZ2E0Gr6IJZzFuxreRnYfjZQlr03mwEUhY 65lhQ4Y6yIBVQ== Message-ID: <7923496a-cdfa-8a3b-a3b3-1f8766e0613c@gotplt.org> Date: Fri, 30 Jun 2023 11:17:03 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [PATCH v3 08/16] wchar: Avoid PLT entries with _FORTIFY_SOURCE Content-Language: en-US To: =?UTF-8?B?RnLDqWTDqXJpYyBCw6lyYXQ=?= , libc-alpha@sourceware.org References: <20230628084246.778302-1-fberat@redhat.com> <20230628084246.778302-9-fberat@redhat.com> From: Siddhesh Poyarekar In-Reply-To: <20230628084246.778302-9-fberat@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3037.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 2023-06-28 04:42, Frédéric Bérat wrote: > The change is meant to avoid unwanted PLT entries for the wmemset and > wcrtomb routines when _FORTIFY_SOURCE is set. > > On top of that, ensure that *_chk routines have their hidden builtin > definitions available. > --- Looks mostly OK except for a question below. > debug/wcrtomb_chk.c | 1 + > debug/wmemset_chk.c | 1 + > include/wchar.h | 15 +++++++++++++++ > .../ldbl-128ibm-compat/ieee128-fwprintf_chk.c | 1 + > sysdeps/x86_64/multiarch/wmemset_chk.c | 4 ++++ > wcsmbs/bits/wchar2-decl.h | 4 ++-- > 6 files changed, 24 insertions(+), 2 deletions(-) > > diff --git a/debug/wcrtomb_chk.c b/debug/wcrtomb_chk.c > index 657be7471d..c156fe09c1 100644 > --- a/debug/wcrtomb_chk.c > +++ b/debug/wcrtomb_chk.c > @@ -28,3 +28,4 @@ __wcrtomb_chk (char *s, wchar_t wchar, mbstate_t *ps, size_t buflen) > { > return __wcrtomb_internal (s, wchar, ps, buflen); > } > +libc_hidden_def (__wcrtomb_chk) > diff --git a/debug/wmemset_chk.c b/debug/wmemset_chk.c > index e11a92815e..1e7fc4fdea 100644 > --- a/debug/wmemset_chk.c > +++ b/debug/wmemset_chk.c > @@ -26,3 +26,4 @@ __wmemset_chk (wchar_t *s, wchar_t c, size_t n, size_t dstlen) > > return wmemset (s, c, n); > } > +libc_hidden_builtin_def (__wmemset_chk) > diff --git a/include/wchar.h b/include/wchar.h > index 7b763bc24f..484e6b3fef 100644 > --- a/include/wchar.h > +++ b/include/wchar.h > @@ -166,6 +166,8 @@ libc_hidden_proto (putwc) > > libc_hidden_proto (mbrtowc) > libc_hidden_proto (wcrtomb) > +libc_hidden_proto (__wcrtomb_chk) > + > extern int __wcscmp (const wchar_t *__s1, const wchar_t *__s2) > __THROW __attribute_pure__; > libc_hidden_proto (__wcscmp) > @@ -260,16 +262,25 @@ extern wchar_t *__wcschrnul (const wchar_t *__s, wchar_t __wc) > > extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, > size_t __ns) __THROW; > +libc_hidden_builtin_proto (__wmemset_chk) > > extern int __vfwscanf (__FILE *__restrict __s, > const wchar_t *__restrict __format, > __gnuc_va_list __arg) > attribute_hidden > /* __attribute__ ((__format__ (__wscanf__, 2, 0)) */; > + > +extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n, > + int __flag, size_t __s_len, > + const wchar_t *__restrict __format, ...) > + __THROW /* __attribute__ ((__format__ (__wprintf__, 5, 6))) */; > + > extern int __fwprintf (__FILE *__restrict __s, > const wchar_t *__restrict __format, ...) > attribute_hidden > /* __attribute__ ((__format__ (__wprintf__, 2, 3))) */; > +extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format, > + ...); > extern int __vfwprintf_chk (FILE *__restrict __s, int __flag, > const wchar_t *__restrict __format, > __gnuc_va_list __arg) > @@ -279,6 +290,10 @@ extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n, > const wchar_t *__restrict __format, > __gnuc_va_list __arg) > /* __attribute__ ((__format__ (__wprintf__, 5, 0))) */; > +extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag, > + const wchar_t *__restrict __format, ...); > +extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format, > + __gnuc_va_list __ap); > > extern int __isoc99_fwscanf (__FILE *__restrict __stream, > const wchar_t *__restrict __format, ...); > diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwprintf_chk.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwprintf_chk.c > index 5b6cc3e768..10658ab125 100644 > --- a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwprintf_chk.c > +++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwprintf_chk.c > @@ -17,6 +17,7 @@ > . */ > > #include > +#include > #include Why do you need this? > > extern int > diff --git a/sysdeps/x86_64/multiarch/wmemset_chk.c b/sysdeps/x86_64/multiarch/wmemset_chk.c > index ac93a1f376..00edf44918 100644 > --- a/sysdeps/x86_64/multiarch/wmemset_chk.c > +++ b/sysdeps/x86_64/multiarch/wmemset_chk.c > @@ -28,4 +28,8 @@ > > libc_ifunc_redirected (__redirect_wmemset_chk, __wmemset_chk, > IFUNC_SELECTOR ()); > +# ifdef SHARED > +__hidden_ver1 (__wmemset_chk, __GI___wmemset_chk, __redirect_wmemset_chk) > + __attribute__ ((visibility ("hidden"))) __attribute_copy__ (__wmemset_chk); > +# endif > #endif > diff --git a/wcsmbs/bits/wchar2-decl.h b/wcsmbs/bits/wchar2-decl.h > index f3a2fd3c99..08c8ebd0e8 100644 > --- a/wcsmbs/bits/wchar2-decl.h > +++ b/wcsmbs/bits/wchar2-decl.h > @@ -71,7 +71,7 @@ extern wchar_t *__REDIRECT_NTH (__wmempcpy_chk_warn, > > extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, > size_t __ns) __THROW; > -extern wchar_t *__REDIRECT_NTH (__wmemset_alias, (wchar_t *__s, wchar_t __c, > +extern wchar_t *__REDIRECT_FORTIFY_NTH (__wmemset_alias, (wchar_t *__s, wchar_t __c, > size_t __n), wmemset); > extern wchar_t *__REDIRECT_NTH (__wmemset_chk_warn, > (wchar_t *__s, wchar_t __c, size_t __n, > @@ -203,7 +203,7 @@ extern wchar_t *__REDIRECT (__fgetws_unlocked_chk_warn, > extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, > mbstate_t *__restrict __p, > size_t __buflen) __THROW __wur; > -extern size_t __REDIRECT_NTH (__wcrtomb_alias, > +extern size_t __REDIRECT_FORTIFY_NTH (__wcrtomb_alias, > (char *__restrict __s, wchar_t __wchar, > mbstate_t *__restrict __ps), wcrtomb) __wur; >