Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp5897679rwl; Mon, 9 Jan 2023 01:04:38 -0800 (PST) X-Google-Smtp-Source: AMrXdXugD8bM5lX56969inAMnRWLp/FqD9wR6HaEdkXW2W7/S3d5tnZZgnNOe71RV8y1AhohBpoX X-Received: by 2002:a05:6402:3819:b0:48d:91a9:2cd0 with SMTP id es25-20020a056402381900b0048d91a92cd0mr14586933edb.29.1673255078543; Mon, 09 Jan 2023 01:04:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673255078; cv=none; d=google.com; s=arc-20160816; b=lkNa4rPt1xoqT3hbKV+ONCGVXiofDfJVTBMHyG/IlFmBxURPPBVfJ+sdc52dyqHEB7 DdFOLAwzpIqxU9PScYa/9AaK2g+32qCNxdfGquwzrSMkmJUdItVifwSP5FsnZFZXY4jq 03NCb+FZ8Rv7xgEWaBm4MsvjmKxR9jrjMsWIZ9iDvmaWnjvNl3mpB2YGlCELlxftLNMW o4nOnkfGGWn1hHw1kVIiGaHSNJWYD/myCpIxVZDozszN49ksrTetjZW4xdzEfQIA5uA2 R2PPubd7HaPi1/kUwsSvZuGkOYbjNrTaYCjo48BFlSNl2/+YdJe3BUQUQht4q8o8bL4n lTcA== 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=erAxCIz/7mL2jdlpQGGkw10TQhsUi5FAR4sLsjQFAx0=; b=CFOZbyyb7H7+RrbmMhGH4tLhZHhK7MWtPDTlkUIMU84xbRtcTCx1QR2x/wg9WhdXrP He8co9PqTcREUcYfhEzPN8NhulmpjdU+k4jtgob6heRC3SEx3I5KvQGPPXvEdDqIxHqz U0G5CRNpQ/52HJwhClmh3zsrAw3hgv4AdabXpU6JXVZZt/4vATDoMY5kOlBD3smPOc9k 4NBgd43Tl9f9cz9CR8ehkOUmsIAeGtB2MGPD/HoBRzHUDu1hCcxi2L5woIpMasWhovMT TKaEJE4/EO39g4SrySkPCEQskYW9kSOiHmHhCxb6JL64SX35ogZp/pbTy3vFc/ugL8GA 1Ilw== 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 c15-20020a0564021f8f00b0048ecc09a43csi8597685edc.343.2023.01.09.01.04.25; Mon, 09 Jan 2023 01:04:38 -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 S233844AbjAIIvX (ORCPT + 54 others); Mon, 9 Jan 2023 03:51:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54658 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237101AbjAIIsi (ORCPT ); Mon, 9 Jan 2023 03:48:38 -0500 Received: from 1wt.eu (wtarreau.pck.nerim.net [62.212.114.60]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id CDB3E17419 for ; Mon, 9 Jan 2023 00:43:57 -0800 (PST) Received: (from willy@localhost) by pcw.home.local (8.15.2/8.15.2/Submit) id 3098gDk8027429; Mon, 9 Jan 2023 09:42:13 +0100 From: Willy Tarreau To: "Paul E. McKenney" Cc: linux-kernel@vger.kernel.org, Willy Tarreau Subject: [PATCH 10/22] tools/nolibc: export environ as a weak symbol on mips Date: Mon, 9 Jan 2023 09:41:56 +0100 Message-Id: <20230109084208.27355-11-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 The environ is retrieved from the _start code and is easy to store at this moment. Let's declare the variable weak and store the value into it. By not being static it will be visible to all units. By being weak, if some programs already declared it, they will continue to be able to use it. This was tested with mips24kc (BE) both with environ inherited from _start and extracted from envp. Signed-off-by: Willy Tarreau --- tools/include/nolibc/arch-mips.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/include/nolibc/arch-mips.h b/tools/include/nolibc/arch-mips.h index a3764f6d267e..7d22f7bc38b3 100644 --- a/tools/include/nolibc/arch-mips.h +++ b/tools/include/nolibc/arch-mips.h @@ -176,6 +176,8 @@ struct sys_stat_struct { _arg4 ? -_num : _num; \ }) +char **environ __attribute__((weak)); + /* startup code, note that it's called __start on MIPS */ void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) __start(void) { @@ -191,6 +193,9 @@ void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) __start(void) "sll $a2, $a0, 2\n" // a2 = argc * 4 "add $a2, $a2, $a1\n" // envp = argv + 4*argc ... "addiu $a2, $a2, 4\n" // ... + 4 + "lui $a3, %hi(environ)\n" // load environ into a3 (hi) + "addiu $a3, %lo(environ)\n" // load environ into a3 (lo) + "sw $a2,($a3)\n" // store envp(a2) into environ "li $t0, -8\n" "and $sp, $sp, $t0\n" // sp must be 8-byte aligned "addiu $sp,$sp,-16\n" // the callee expects to save a0..a3 there! -- 2.17.5