From patchwork Fri Sep 30 19:14:02 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 77175 Delivered-To: patch@linaro.org Received: by 10.140.106.72 with SMTP id d66csp457828qgf; Fri, 30 Sep 2016 12:14:29 -0700 (PDT) X-Received: by 10.98.66.205 with SMTP id h74mr4015145pfd.92.1475262869631; Fri, 30 Sep 2016 12:14:29 -0700 (PDT) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id c9si11871757pfd.35.2016.09.30.12.14.29 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Sep 2016 12:14:29 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-73637-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org; spf=pass (google.com: domain of libc-alpha-return-73637-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-73637-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE dis=NONE) header.from=linaro.org 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; q=dns; s= default; b=bASTcBUuuQLtR/hwK0LaBEAnxqo0BlmVzhLmOnCLHVZyWDGUSCg1q 423T68FMLGPbYgs2h2ZlIJNNtPNLDilHHnef4O4BcaUjSuLmDcO3XuaXvzIhbL/Z LS4pkAh02fOrsoRcFlvkwlzk3jCxwPvCiV2gdDBODLVZfZgrSNBh/A= 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; s=default; bh=WqsJNEoRPbPPnoTv7ftumXmRSRw=; b=NQJH86pJ6wyf15pGN0ltUhVEscAN O3bRRqnlwDAOuMrgQDKHeV00a7/gf4bTgSL45a6fdh3pOq0eK8DiKcvvFyfAvtAl wDZqUuit34ZCAY8KzKJvhzRTez7QKOSJIuPD3Lshywhc7ogRH2nS4oaC0mYdpR/P MOLRxqSoaXJOvcg= Received: (qmail 129061 invoked by alias); 30 Sep 2016 19:14:20 -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 129051 invoked by uid 89); 30 Sep 2016 19:14:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=strncpy, __NTH, __nth, xxx X-HELO: mail-pf0-f181.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id; bh=lM0/7DfZ8r4g7V+wL2KExxLm0M60Cn6MOHtRUzOsfSI=; b=HUtJcpMI+twkyk7BsDbd6MsZGgJQnza0WFQyJCXSD88tfWrbD2G4vM5j3LHB2tLTlv ZtcoY6udcJlAWPBlUnAjIEjMtlcmcwBsqK0pnllsIB0Co40vK3j8Kt5DR/HpKeoZULNj xKaMtFs75TKeFFYmouGsz0UK5PCAALX6e1EOPExHgRs/K3VNQvHPNthcQiW91IOvYIuY jdG8uhrgIt99gw/hMCQrsuK5o6S+ewX9fapv0bkSrvXqJYqLFkPfEJNJ2FYa8p/PkpFT L0BwWabzBXo5TOvckzZaKQWf8A4K2+lfzCGChFjYb8U09jKFZ/fP2NmBOKBdxgjlNOtc GrgQ== X-Gm-Message-State: AA6/9RmzsU9WLmF2tcUiW0dF32k9QXgt/4P+tcw0+0yIomY9+wcHsoeghDLZgqqjuN3986yu X-Received: by 10.98.194.133 with SMTP id w5mr14270125pfk.42.1475262848176; Fri, 30 Sep 2016 12:14:08 -0700 (PDT) From: Adhemerval Zanella X-Google-Original-From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH] Use gcc stpncpy chk builtin (BZ #20661) Date: Fri, 30 Sep 2016 12:14:02 -0700 Message-Id: <1475262842-6724-1-git-send-email-adhemerval.zanella@linaro.com> Since r182378 GCC provides stpncpy_chk builtin support and it is included in official GCC 4.7.4 package. It allows GLIBC to use it on string3.h headers without any additional guards. This patch changes current fortify code to use it instead. The fortify definition is also new guarded with __USE_GNU, similar to stpcpy. Check on x86_64 with GCC 5.4. [BZ #20661] * string/bits/string3 [__USE_GNU] (stpncpy): Add fortify version based on GCC builtin. --- ChangeLog | 6 ++++++ string/bits/string3.h | 13 ++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) -- 2.7.4 diff --git a/string/bits/string3.h b/string/bits/string3.h index 8f13b65..e19947c 100644 --- a/string/bits/string3.h +++ b/string/bits/string3.h @@ -38,6 +38,7 @@ __warndecl (__warn_memset_zero_len, # ifdef __USE_GNU # undef mempcpy # undef stpcpy +# undef stpncpy # endif # ifdef __USE_MISC # undef bcopy @@ -126,20 +127,14 @@ __NTH (strncpy (char *__restrict __dest, const char *__restrict __src, return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest)); } -/* XXX We have no corresponding builtin yet. */ -extern char *__stpncpy_chk (char *__dest, const char *__src, size_t __n, - size_t __destlen) __THROW; -extern char *__REDIRECT_NTH (__stpncpy_alias, (char *__dest, const char *__src, - size_t __n), stpncpy); +#ifdef __USE_GNU __fortify_function char * __NTH (stpncpy (char *__dest, const char *__src, size_t __n)) { - if (__bos (__dest) != (size_t) -1 - && (!__builtin_constant_p (__n) || __n > __bos (__dest))) - return __stpncpy_chk (__dest, __src, __n, __bos (__dest)); - return __stpncpy_alias (__dest, __src, __n); + return __builtin___stpncpy_chk (__dest, __src, __n, __bos (__dest)); } +#endif __fortify_function char *