Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp4023856ybl; Mon, 3 Feb 2020 11:03:56 -0800 (PST) X-Google-Smtp-Source: APXvYqzGnXYPOw8rDdQ5p/yoENYcL+GiT1Ex4+VQkqH8EKOuhjkFCtUMLHuMIJQbyEWG94Rov++M X-Received: by 2002:aca:3857:: with SMTP id f84mr351357oia.150.1580756636016; Mon, 03 Feb 2020 11:03:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580756636; cv=none; d=google.com; s=arc-20160816; b=CuCm5LSPVKQu9911JrbZgv4q9Z2GI/E3TM4pa1Evx0p1zhFZMGCWTzLWD6G0hj+MLf N8HIfj7nJeLSwlzYSUDYFJo7cam6Sy8My9LDhXF8v0qh6aEPdM/iV0U5oyUkJtIrsvsy qEEE8fbm0C4xW51D2AgeXA4yhooA7ip3MPPWgHfD1amUfaQW+vkshDTe6SQA6jS5aBrk PlC0bRmdkD2K/Sg+jyI2e7AzCcUkP3KR1VPTkT6e2tpv3/kbaACE/ai45qfMRftgs6IK UY3dOB2bcMofUMOt6aduweQiGm7PsOosSCqa5+SGaRZ2IfF0CKPoFOaakzLSviFsQCiM tb6w== 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:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=JcySakjCM0TPPJQyWKO2Uminc7o2qd+zLjC+qhbu1dc=; b=o/aD8iJWY2EviO7adqv+a7kYkzVS1IJAIQamc1bS9ooVzZO8Pe3sqTdbska4DJiRZ1 ErWy5D6OfPGaiwZ4n1DMtIKNbV52iF1KD6dllXvMALrA1EkZxPjG15FsWE0OdVkpI8/7 iciGjrnQAwJr7H+pL5EIkg9mAB8DuHOem9i82ABegrrOFpJ3eDv4T8F6i+u3EVRr+MQx 00EPnp9rE4DdNLuG7SjNqt/g1bIxtVOPU8948+azisvlFEu1KSf37dbodUkTkX32Ifzr DHYb5ksCeHpgDOai5pi+pWbPCVUcUXCYwDqK7gsK7ZNu6cM6lkmC+byryEJ6NZjjrDMF VLfQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=k05EFcoT; 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 l5si9615591otn.35.2020.02.03.11.03.43; Mon, 03 Feb 2020 11:03:55 -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; dkim=pass header.i=@kernel.org header.s=default header.b=k05EFcoT; 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 S1728706AbgBCQZs (ORCPT + 99 others); Mon, 3 Feb 2020 11:25:48 -0500 Received: from mail.kernel.org ([198.145.29.99]:36542 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728627AbgBCQZq (ORCPT ); Mon, 3 Feb 2020 11:25:46 -0500 Received: from localhost (unknown [104.132.45.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id EBF1F2080C; Mon, 3 Feb 2020 16:25:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1580747145; bh=LZAGAJaQ3n3fZVaLbEAb93zTGMspTgL5PM6oViMILNI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=k05EFcoT8m4iKG7K45XoAEqHNEbdCn4D+dea3yFJyZ/GXjdPNMMFnMCq6hA81mp+l oQmMhSKqsZBI1QFu//TJumb12TvVu6OGIgCXFbLy5QHLfZxeFPKIC5SL9GKDzZ5KmA b8fbmW2nK6xfP3t8p2c6n8fhfsZkMlg6jbrDYZJs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Vitaly Chikunov , Dmitry Levin , Josh Poimboeuf , kbuild test robot , Peter Zijlstra , Vineet Gupta , Arnaldo Carvalho de Melo Subject: [PATCH 4.9 30/68] tools lib: Fix builds when glibc contains strlcpy() Date: Mon, 3 Feb 2020 16:19:26 +0000 Message-Id: <20200203161909.959158906@linuxfoundation.org> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200203161904.705434837@linuxfoundation.org> References: <20200203161904.705434837@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Vitaly Chikunov commit 6c4798d3f08b81c2c52936b10e0fa872590c96ae upstream. 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 Signed-off-by: Greg Kroah-Hartman --- tools/include/linux/string.h | 8 ++++++++ tools/lib/string.c | 7 +++++++ 2 files changed, 15 insertions(+) --- a/tools/include/linux/string.h +++ b/tools/include/linux/string.h @@ -13,7 +13,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); --- a/tools/lib/string.c +++ b/tools/lib/string.c @@ -76,6 +76,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); @@ -87,3 +91,6 @@ size_t __weak strlcpy(char *dest, const } return ret; } +#ifdef __clang__ +#pragma clang diagnostic pop +#endif