Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp978603ybl; Fri, 10 Jan 2020 09:55:04 -0800 (PST) X-Google-Smtp-Source: APXvYqxhUomjaBagMa0b0Z9a8Rwc+yxvnPaGh5RQN0Fplevnh88PXFvWNWODMhy1CzAlE0R+oqq/ X-Received: by 2002:aca:120e:: with SMTP id 14mr2983990ois.135.1578678904664; Fri, 10 Jan 2020 09:55:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578678904; cv=none; d=google.com; s=arc-20160816; b=0k8nlAdt9bkKjEkpPsPSAMgilzdjupcWNvKCOrRE1O2m8XgxfvrlggXLEVb/9A1V5s Bct1w01kAw/gVxv+ruHK4bD5F8IvZ1AjTtissFRadDOWObK7ZZgvFLDOD6XIzcfBkzHc kY1EIsb0RoLILlOl2wcGloWMPAtjIC8tGmgOjsQvmQmR50HUG9ts9XVMh1QsFbKyTzBs 2IYtYXzTQ2LslCBuJ/TrWTCWvUV/XMEdHsHw0apG9z5LnZ2374ULiox3tKk3ko7sr+PC kRb2msNMm8mA2XDF7qNitDw4UUOETcf55F+i1f3BBPOlBAfvXu+0JdK/TxhktzPCziFk 8OHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :robot-unsubscribe:robot-id:message-id:mime-version:references :in-reply-to:cc:subject:to:reply-to:from:date; bh=FE4g3Py1JEFyWKwuD/SsRDC7RWDwazVrsWDfrUfPYxs=; b=s0bIT3zXHqKvRTA6vwjq8WaNdfjeHy5lh9QDvkyEFD9O4v8O3BNRIHwuctMeOgJo4r L5nGJxB1dlKkd0xZAlDLp4FXjxCqPuwRe7TWiOsHrS+snP/WJKrpMUSXiU0cSVTa9IEW JSBrrq48uVgbcfN2C/3h5yDGgjQ3dd+oL4m048FnkZB3F/zAOX8D8IC7krSYP5Ol0fV0 TKx0/vxXrB2WvsFpLy0apJPwBXnNSIeIlKVC6mXpTzNYR7J167Z3jtGrdhWv0NClLk7p jwOw0VlIZsei7tPlaEKdWFhZ9k+WmTY7g0VncLoLSjD0dyIKGjOVm/Un2mk6om7hhyME ltsw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j17si1675092otl.278.2020.01.10.09.54.53; Fri, 10 Jan 2020 09:55:04 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728887AbgAJRxg convert rfc822-to-8bit (ORCPT + 99 others); Fri, 10 Jan 2020 12:53:36 -0500 Received: from Galois.linutronix.de ([193.142.43.55]:59200 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728761AbgAJRxb (ORCPT ); Fri, 10 Jan 2020 12:53:31 -0500 Received: from [5.158.153.53] (helo=tip-bot2.lab.linutronix.de) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1ipyTC-0001gD-U4; Fri, 10 Jan 2020 18:53:15 +0100 Received: from [127.0.1.1] (localhost [IPv6:::1]) by tip-bot2.lab.linutronix.de (Postfix) with ESMTP id 64B1D1C2D52; Fri, 10 Jan 2020 18:53:14 +0100 (CET) Date: Fri, 10 Jan 2020 17:53:14 -0000 From: "tip-bot2 for Vitaly Chikunov" Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: perf/core] tools lib: Fix builds when glibc contains strlcpy() Cc: Vitaly Chikunov , Dmitry Levin , Josh Poimboeuf , kbuild test robot , Peter Zijlstra , stable@vger.kernel.org, Vineet Gupta , Arnaldo Carvalho de Melo , x86 , LKML In-Reply-To: <20191224172029.19690-1-vt@altlinux.org> References: <20191224172029.19690-1-vt@altlinux.org> MIME-Version: 1.0 Message-ID: <157867879422.30329.10586213416057633540.tip-bot2@tip-bot2> X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8BIT X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following commit has been merged into the perf/core branch of tip: Commit-ID: 6c4798d3f08b81c2c52936b10e0fa872590c96ae Gitweb: https://git.kernel.org/tip/6c4798d3f08b81c2c52936b10e0fa872590c96ae Author: Vitaly Chikunov AuthorDate: Tue, 24 Dec 2019 20:20:29 +03:00 Committer: Arnaldo Carvalho de Melo CommitterDate: Mon, 06 Jan 2020 11:46:10 -03:00 tools lib: Fix builds when glibc contains strlcpy() Disable a couple of compilation warnings (which are treated as errors) on strlcpy() definition and declaration, allowing users to compile perf and kernel (objtool) when: 1. glibc have strlcpy() (such as in ALT Linux since 2004) objtool and perf build fails with this (in gcc): In file included from exec-cmd.c:3: tools/include/linux/string.h:20:15: error: redundant redeclaration of ‘strlcpy’ [-Werror=redundant-decls] 20 | extern size_t strlcpy(char *dest, const char *src, size_t size); 2. clang ignores `-Wredundant-decls', but produces another warning when building perf: CC util/string.o ../lib/string.c:99:8: error: attribute declaration must precede definition [-Werror,-Wignored-attributes] size_t __weak strlcpy(char *dest, const char *src, size_t size) ../../tools/include/linux/compiler.h:66:34: note: expanded from macro '__weak' # define __weak __attribute__((weak)) /usr/include/bits/string_fortified.h:151:8: note: previous definition is here __NTH (strlcpy (char *__restrict __dest, const char *__restrict __src, Committer notes: The #pragma GCC diagnostic directive was introduced in gcc 4.6, so check for that as well. Fixes: ce99091 ("perf tools: Move strlcpy() from perf to tools/lib/string.c") Fixes: 0215d59 ("tools lib: Reinstate strlcpy() header guard with __UCLIBC__") Resolves: https://bugzilla.kernel.org/show_bug.cgi?id=118481 Signed-off-by: Vitaly Chikunov Reviewed-by: Dmitry Levin Cc: Dmitry Levin Cc: Josh Poimboeuf Cc: kbuild test robot Cc: Peter Zijlstra Cc: stable@vger.kernel.org Cc: Vineet Gupta Link: http://lore.kernel.org/lkml/20191224172029.19690-1-vt@altlinux.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/include/linux/string.h | 8 ++++++++ tools/lib/string.c | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/tools/include/linux/string.h b/tools/include/linux/string.h index 980cb92..5e9e781 100644 --- a/tools/include/linux/string.h +++ b/tools/include/linux/string.h @@ -17,7 +17,15 @@ int strtobool(const char *s, bool *res); * However uClibc headers also define __GLIBC__ hence the hack below */ #if defined(__GLIBC__) && !defined(__UCLIBC__) +// pragma diagnostic was introduced in gcc 4.6 +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wredundant-decls" +#endif extern size_t strlcpy(char *dest, const char *src, size_t size); +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) +#pragma GCC diagnostic pop +#endif #endif char *str_error_r(int errnum, char *buf, size_t buflen); diff --git a/tools/lib/string.c b/tools/lib/string.c index f2ae1b8..f645343 100644 --- a/tools/lib/string.c +++ b/tools/lib/string.c @@ -96,6 +96,10 @@ int strtobool(const char *s, bool *res) * If libc has strlcpy() then that version will override this * implementation: */ +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wignored-attributes" +#endif size_t __weak strlcpy(char *dest, const char *src, size_t size) { size_t ret = strlen(src); @@ -107,6 +111,9 @@ size_t __weak strlcpy(char *dest, const char *src, size_t size) } return ret; } +#ifdef __clang__ +#pragma clang diagnostic pop +#endif /** * skip_spaces - Removes leading whitespace from @str.