All of lore.kernel.org
 help / color / mirror / Atom feed
From: Willy Tarreau <w@1wt.eu>
To: "Paul E. McKenney" <paulmck@kernel.org>
Cc: linux-kernel@vger.kernel.org, Willy Tarreau <w@1wt.eu>
Subject: [PATCH 10/22] tools/nolibc: export environ as a weak symbol on mips
Date: Mon,  9 Jan 2023 09:41:56 +0100	[thread overview]
Message-ID: <20230109084208.27355-11-w@1wt.eu> (raw)
In-Reply-To: <20230109084208.27355-1-w@1wt.eu>

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 <w@1wt.eu>
---
 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


  parent reply	other threads:[~2023-01-09  8:51 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-09  8:41 [PATCH 00/22] nolibc: usability improvements (errno, environ, auxv) Willy Tarreau
2023-01-09  8:41 ` [PATCH 01/22] tools/nolibc: make compiler and assembler agree on the section around _start Willy Tarreau
2023-01-09  8:41 ` [PATCH 02/22] tools/nolibc: enable support for thumb1 mode for ARM Willy Tarreau
2023-01-09  8:41 ` [PATCH 03/22] tools/nolibc: support thumb mode with frame pointers on ARM Willy Tarreau
2023-01-09  8:41 ` [PATCH 04/22] tools/nolibc: remove local definitions of O_* flags for open/fcntl Willy Tarreau
2023-01-09  8:41 ` [PATCH 05/22] tools/nolibc: make errno a weak symbol instead of a static one Willy Tarreau
2023-01-09  8:41 ` [PATCH 06/22] tools/nolibc: export environ as a weak symbol on x86_64 Willy Tarreau
2023-01-09  8:41 ` [PATCH 07/22] tools/nolibc: export environ as a weak symbol on i386 Willy Tarreau
2023-01-09  8:41 ` [PATCH 08/22] tools/nolibc: export environ as a weak symbol on arm64 Willy Tarreau
2023-01-09  8:41 ` [PATCH 09/22] tools/nolibc: export environ as a weak symbol on arm Willy Tarreau
2023-01-09  8:41 ` Willy Tarreau [this message]
2023-01-09  8:41 ` [PATCH 11/22] tools/nolibc: export environ as a weak symbol on riscv Willy Tarreau
2023-01-09  8:41 ` [PATCH 12/22] tools/nolibc: export environ as a weak symbol on s390 Willy Tarreau
2023-01-09  8:41 ` [PATCH 13/22] tools/nolibc: add auxiliary vector retrieval for i386 Willy Tarreau
2023-01-09  8:42 ` [PATCH 14/22] tools/nolibc: add auxiliary vector retrieval for x86_64 Willy Tarreau
2023-01-09  8:42 ` [PATCH 15/22] tools/nolibc: add auxiliary vector retrieval for arm64 Willy Tarreau
2023-01-09  8:42 ` [PATCH 16/22] tools/nolibc: add auxiliary vector retrieval for arm Willy Tarreau
2023-01-09  8:42 ` [PATCH 17/22] tools/nolibc: add auxiliary vector retrieval for riscv Willy Tarreau
2023-01-09  8:42 ` [PATCH 18/22] tools/nolibc: add auxiliary vector retrieval for mips Willy Tarreau
2023-01-09  8:42 ` [PATCH 19/22] tools/nolibc: add auxiliary vector retrieval for s390 Willy Tarreau
2023-01-09  8:42 ` [PATCH 20/22] nolibc/stdlib: Implement `getauxval(3)` function Willy Tarreau
2023-01-09  8:42 ` [PATCH 21/22] nolibc/sys: Implement `getpagesize(2)` function Willy Tarreau
2023-01-09  8:42 ` [PATCH 22/22] selftests/nolibc: Add `getpagesize(2)` selftest Willy Tarreau
2023-01-09  9:15 ` [PATCH 00/22] nolibc: usability improvements (errno, environ, auxv) Ammar Faizi
2023-01-09  9:17   ` Willy Tarreau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230109084208.27355-11-w@1wt.eu \
    --to=w@1wt.eu \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paulmck@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.