From nobody Fri Dec 19 17:50:22 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8AF48C4332F for ; Mon, 14 Nov 2022 11:48:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236834AbiKNLsy (ORCPT ); Mon, 14 Nov 2022 06:48:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41236 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236842AbiKNLsK (ORCPT ); Mon, 14 Nov 2022 06:48:10 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C8415264BF for ; Mon, 14 Nov 2022 03:45:39 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 72A66B80E78 for ; Mon, 14 Nov 2022 11:45:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E9976C433D7; Mon, 14 Nov 2022 11:45:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1668426337; bh=VYQURovUo97zO8sJmHkHAsr8KxvRG48y3FQbb9I2wLo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Z56jXBWIsBXBUMabvHqQKKRnY5i9Yvn3pWB+MImH0iB9rNmtARnU/nYhyOp87J2KY ml3vFdOHGOQgMiMSvx5Mk9jDreX5NOGSklPB09RpuPYi+6TENrcT7e60VFQGSmIUnR 3LKqf5Jt4rbq42rrcKS6/ItDLaLySbMldOWP6LlnQs755cD5K9NsUQaLQN9y1Hq8Qa ntYAvZPVESwrDLyh1XRFO6i3Cd2GeaSSmag4Fhiys6xEuadykc9BW7b3Vt3njgjZbX 5xCxKCBLPRNrwm7FWVhhsk+4CZhs9ltA6UF4Nnmd7n16b/JKDFvmZ10Qakl4qVQnv5 8u7O4bFsjNrJw== From: "Jiri Slaby (SUSE)" To: linux-kernel@vger.kernel.org Cc: Andi Kleen , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , x86@kernel.org, Martin Liska , Jiri Slaby Subject: [PATCH 41/46] x86/lib, lto: Mark 32bit mem{cpy,move,set} as __used Date: Mon, 14 Nov 2022 12:43:39 +0100 Message-Id: <20221114114344.18650-42-jirislaby@kernel.org> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221114114344.18650-1-jirislaby@kernel.org> References: <20221114114344.18650-1-jirislaby@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Andi Kleen gcc doesn't always recognize that memcpy/set/move called through __builtins are referenced because the reference happens too late in the RTL expansion phase. This can make LTO to drop them, leading to undefined symbols. Mark them as __used to avoid that. This is only needed on 32bit, on 64bit they're assembler anyways. Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Dave Hansen Cc: "H. Peter Anvin" Cc: x86@kernel.org Signed-off-by: Andi Kleen Signed-off-by: Martin Liska Signed-off-by: Jiri Slaby --- arch/x86/lib/memcpy_32.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/x86/lib/memcpy_32.c b/arch/x86/lib/memcpy_32.c index ef3af7ff2c8a..53fa1cac79d1 100644 --- a/arch/x86/lib/memcpy_32.c +++ b/arch/x86/lib/memcpy_32.c @@ -6,19 +6,19 @@ #undef memset #undef memmove =20 -__visible void *memcpy(void *to, const void *from, size_t n) +__used __visible void *memcpy(void *to, const void *from, size_t n) { return __memcpy(to, from, n); } EXPORT_SYMBOL(memcpy); =20 -__visible void *memset(void *s, int c, size_t count) +__used __visible void *memset(void *s, int c, size_t count) { return __memset(s, c, count); } EXPORT_SYMBOL(memset); =20 -__visible void *memmove(void *dest, const void *src, size_t n) +__used __visible void *memmove(void *dest, const void *src, size_t n) { int d0,d1,d2,d3,d4,d5; char *ret =3D dest; --=20 2.38.1