Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp5891034rwl; Mon, 9 Jan 2023 00:58:44 -0800 (PST) X-Google-Smtp-Source: AMrXdXtsw1wqcGcpZNHL/MjFHSdRxu7mEBFuJYHhNmA18oIAmeVckq7SOMxPsHFIoWRnWmYjrCaR X-Received: by 2002:a17:906:d052:b0:7be:e26a:6104 with SMTP id bo18-20020a170906d05200b007bee26a6104mr56359101ejb.52.1673254724122; Mon, 09 Jan 2023 00:58:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673254724; cv=none; d=google.com; s=arc-20160816; b=gDjUzHvGx8R5DFpz79S54Jgs+wVNM0aobqD2//NNOFcTnvEi40fUKXCKFBpiC3XfQS zHyI0sfLl3QncizogYxrukAt9qPNq7YOpYIw2i/MSxKkGKUR2g+JzoATrtY5uTqK2LUO iEQS1WbZiuiP0Eun8CHF9c/z7A2SsANjQgwmKNzmzM+1vbXx78QwUoGO0vgEgxBmAW2U q/RGLjVvAVTxw51e6+NiU6/9boAm8Y0RZBqMZD5jhjw+3B56d2Y14T+/N/BYBl+4c2x0 rqetrU299QjEWIu9bcyNGfT46jgqHrar+1tFkdpOD6iYOEDfMxONwr087zcQZ1atjEkw QSCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=ePcxfWHA/VDoNR7GA64E55XohqTis3V1a5fi5+l48Hk=; b=us04WzhK8TCOVul1EJ/eFiUYNGkVH6tg7/zZe/SAeqZY8vgmTSP2wN1d8tyKbLbLt0 u9KONj+0rolmU0YdZXyqOO5Nc3hjOnlzFOu5uRuvQpKHMQKB2e6Xrnpu1W+GLc5zXI/A sZxaU6nmw3800HX20bQJKlAD+7dRa6MjLuKxuvDcTwbBx/R2Yw1ASG/gxYRDQ8vVLFpo fsGBQY431u6wJjzjsa0U0nroBPlyzTk5Lx1qnTj5F+DH8WDwkCAqy3jKqBxnD5uh1BlG A3vblxm1FPTsPbB9g+5xg14hJTmW0puhF0AdWwbhLwVaYO24SR96ghiKKTQFJEz4UzHF AmSw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qk32-20020a1709077fa000b007c040bc1679si9242539ejc.237.2023.01.09.00.58.31; Mon, 09 Jan 2023 00:58:44 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236923AbjAIIrN (ORCPT + 54 others); Mon, 9 Jan 2023 03:47:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51564 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237010AbjAIIqV (ORCPT ); Mon, 9 Jan 2023 03:46:21 -0500 Received: from 1wt.eu (wtarreau.pck.nerim.net [62.212.114.60]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 04199140C1 for ; Mon, 9 Jan 2023 00:42:58 -0800 (PST) Received: (from willy@localhost) by pcw.home.local (8.15.2/8.15.2/Submit) id 3098gC9b027424; Mon, 9 Jan 2023 09:42:12 +0100 From: Willy Tarreau To: "Paul E. McKenney" Cc: linux-kernel@vger.kernel.org, Willy Tarreau Subject: [PATCH 05/22] tools/nolibc: make errno a weak symbol instead of a static one Date: Mon, 9 Jan 2023 09:41:51 +0100 Message-Id: <20230109084208.27355-6-w@1wt.eu> X-Mailer: git-send-email 2.17.5 In-Reply-To: <20230109084208.27355-1-w@1wt.eu> References: <20230109084208.27355-1-w@1wt.eu> X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_PASS, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Till now errno was declared static so that it could be eliminated if unused. While the goal is commendable for tiny executables as it allows to eliminate any data and bss segments when not used, this comes with some limitations, one of which being that the errno symbol seen in different units are not the same. Even though this has never been a real issue given the nature of the programs involved till now, it happens that referencing the same symbol from multiple units can also be achieved using weak symbols, with a difference being that only one of them will be used for all of them. Compared to weak symbols, static basically have no benefit for regular programs since there are always at least a few variables in most of these, so the bss segment cannot be eliminated. E.g: $ size nolibc-test-static-errno text data bss dec hex filename 11531 0 48 11579 2d3b nolibc-test-static-errno Furthermore, the weak symbol doesn't use bss storage at all, resulting in a slightly section: $ size nolibc-test-weak-errno text data bss dec hex filename 11531 0 40 11571 2d33 nolibc-test-weak-errno This patch thus converts errno from static to weak. Signed-off-by: Willy Tarreau --- tools/include/nolibc/errno.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tools/include/nolibc/errno.h b/tools/include/nolibc/errno.h index 9dc4919c769b..a44486ff0477 100644 --- a/tools/include/nolibc/errno.h +++ b/tools/include/nolibc/errno.h @@ -9,11 +9,9 @@ #include -/* this way it will be removed if unused */ -static int errno; - #ifndef NOLIBC_IGNORE_ERRNO #define SET_ERRNO(v) do { errno = (v); } while (0) +int errno __attribute__((weak)); #else #define SET_ERRNO(v) do { } while (0) #endif -- 2.17.5