From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/toolchain/glibc-patches:master commit in: 9999/
Date: Fri, 24 Jan 2025 11:27:35 +0000 (UTC) [thread overview]
Message-ID: <1737718044.76b1cd8ec361bee90e8ebfcd58dd44f8017684c5.sam@gentoo> (raw)
commit: 76b1cd8ec361bee90e8ebfcd58dd44f8017684c5
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 24 11:27:24 2025 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Jan 24 11:27:24 2025 +0000
URL: https://gitweb.gentoo.org/proj/toolchain/glibc-patches.git/commit/?id=76b1cd8e
9999: drop now-obsolete revert
It landed upstream.
Signed-off-by: Sam James <sam <AT> gentoo.org>
...ib-Support-malloc-managed-environ-arrays-.patch | 246 ---------------------
1 file changed, 246 deletions(-)
diff --git a/9999/0007-Revert-stdlib-Support-malloc-managed-environ-arrays-.patch b/9999/0007-Revert-stdlib-Support-malloc-managed-environ-arrays-.patch
deleted file mode 100644
index baeba66..0000000
--- a/9999/0007-Revert-stdlib-Support-malloc-managed-environ-arrays-.patch
+++ /dev/null
@@ -1,246 +0,0 @@
-https://sourceware.org/PR32588
-
-From 9cd3432490deb23be736bd79f9a4bffc8820cc6e Mon Sep 17 00:00:00 2001
-Message-ID: <9cd3432490deb23be736bd79f9a4bffc8820cc6e.1737676467.git.sam@gentoo.org>
-From: Sam James <sam@gentoo.org>
-Date: Thu, 23 Jan 2025 23:54:25 +0000
-Subject: [PATCH] Revert "stdlib: Support malloc-managed environ arrays for
- compatibility"
-
-This reverts commit b62759db04b8ed7f829c06f1d7c3b8fb70616493.
----
- csu/init-first.c | 1 -
- csu/libc-start.c | 1 -
- include/unistd.h | 3 --
- posix/environ.c | 2 --
- stdlib/Makefile | 1 -
- stdlib/setenv.c | 66 +++++++++++++++++++-------------------
- stdlib/tst-setenv-malloc.c | 64 ------------------------------------
- 7 files changed, 33 insertions(+), 105 deletions(-)
- delete mode 100644 stdlib/tst-setenv-malloc.c
-
-diff --git a/csu/init-first.c b/csu/init-first.c
-index 0ad6f75dcdd..e35e4ce84f1 100644
---- a/csu/init-first.c
-+++ b/csu/init-first.c
-@@ -61,7 +61,6 @@ _init_first (int argc, char **argv, char **envp)
- __libc_argc = argc;
- __libc_argv = argv;
- __environ = envp;
-- __environ_startup = envp;
-
- #ifndef SHARED
- /* First the initialization which normally would be done by the
-diff --git a/csu/libc-start.c b/csu/libc-start.c
-index 4e15b6191dc..6f3d52e223d 100644
---- a/csu/libc-start.c
-+++ b/csu/libc-start.c
-@@ -244,7 +244,6 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
- char **ev = &argv[argc + 1];
-
- __environ = ev;
-- __environ_startup = ev;
-
- /* Store the lowest stack address. This is done in ld.so if this is
- the code for the DSO. */
-diff --git a/include/unistd.h b/include/unistd.h
-index ada957f9d04..e241603b813 100644
---- a/include/unistd.h
-+++ b/include/unistd.h
-@@ -203,9 +203,6 @@ libc_hidden_proto (__tcsetpgrp)
- extern int __libc_enable_secure attribute_relro;
- rtld_hidden_proto (__libc_enable_secure)
-
--/* Original value of __environ. Initialized by _init_first (dynamic)
-- or __libc_start_main (static). */
--extern char **__environ_startup attribute_hidden;
-
- /* Various internal function. */
- extern void __libc_check_standard_fds (void) attribute_hidden;
-diff --git a/posix/environ.c b/posix/environ.c
-index 2430b47d8ee..a0ed0d80eab 100644
---- a/posix/environ.c
-+++ b/posix/environ.c
-@@ -10,5 +10,3 @@ weak_alias (__environ, environ)
- /* The SVR4 ABI says `_environ' will be the name to use
- in case the user overrides the weak alias `environ'. */
- weak_alias (__environ, _environ)
--
--char **__environ_startup;
-diff --git a/stdlib/Makefile b/stdlib/Makefile
-index ee95b2e79a2..a5fbc1a27e1 100644
---- a/stdlib/Makefile
-+++ b/stdlib/Makefile
-@@ -316,7 +316,6 @@ tests := \
- tst-setcontext9 \
- tst-setcontext10 \
- tst-setcontext11 \
-- tst-setenv-malloc \
- tst-stdbit-Wconversion \
- tst-stdbit-builtins \
- tst-stdc_bit_ceil \
-diff --git a/stdlib/setenv.c b/stdlib/setenv.c
-index c6dc9f7945a..2a2eec9c987 100644
---- a/stdlib/setenv.c
-+++ b/stdlib/setenv.c
-@@ -191,52 +191,52 @@ __add_to_environ (const char *name, const char *value, const char *combined,
- ep[1] = NULL;
- else
- {
-- /* We cannot use __environ as is and need a larger allocation. */
--
-- if (start_environ == __environ_startup
-- || __environ_is_from_array_list (start_environ))
-- {
-- /* Allocate a new array, managed in the list. */
-- struct environ_array *target_array
-- = __environ_new_array (required_size);
-- if (target_array == NULL)
-- {
-- UNLOCK;
-- return -1;
-- }
-- result_environ = &target_array->array[0];
--
-- /* Copy over the __environ array contents. This code
-- handles the case start_environ == ep == NULL, too. */
-- size_t i;
-- for (i = 0; start_environ + i < ep; ++i)
-- /* Regular store because unless there has been direct
-- manipulation of the environment, target_array is still
-- a private copy. */
-- result_environ[i] = atomic_load_relaxed (start_environ + i);
-- }
-+ /* We cannot use __environ as is and need to copy over the
-+ __environ contents into an array managed via
-+ __environ_array_list. */
-+
-+ struct environ_array *target_array;
-+ if (__environ_array_list != NULL
-+ && required_size <= __environ_array_list->allocated)
-+ /* Existing array has enough room. Contents is copied below. */
-+ target_array = __environ_array_list;
- else
- {
-- /* Otherwise the application installed its own pointer.
-- Historically, this pointer was managed using realloc.
-- Continue doing so. This disables multi-threading
-- support. */
-- result_environ = __libc_reallocarray (start_environ,
-- required_size,
-- sizeof (*result_environ));
-- if (result_environ == NULL)
-+ /* Allocate a new array. */
-+ target_array = __environ_new_array (required_size);
-+ if (target_array == NULL)
- {
- UNLOCK;
- return -1;
- }
- }
-
-+ /* Copy over the __environ array contents. This forward
-+ copy slides backwards part of the array if __environ
-+ points into target_array->array. This happens if an
-+ application makes an assignment like:
-+
-+ environ = &environ[1];
-+
-+ The forward copy avoids clobbering values that still
-+ needing copying. This code handles the case
-+ start_environ == ep == NULL, too. */
-+ size_t i;
-+ for (i = 0; start_environ + i < ep; ++i)
-+ /* Regular store because unless there has been direct
-+ manipulation of the environment, target_array is still
-+ a private copy. */
-+ target_array->array[i] = atomic_load_relaxed (start_environ + i);
-+
- /* This is the new place where we should add the element. */
-- ep = result_environ + (required_size - 2);
-+ ep = target_array->array + i;
-
- /* Add the null terminator in case there was a pointer there
- previously. */
- ep[1] = NULL;
-+
-+ /* And __environ should be repointed to our array. */
-+ result_environ = &target_array->array[0];
- }
- }
-
-diff --git a/stdlib/tst-setenv-malloc.c b/stdlib/tst-setenv-malloc.c
-deleted file mode 100644
-index 18a9d36842e..00000000000
---- a/stdlib/tst-setenv-malloc.c
-+++ /dev/null
-@@ -1,64 +0,0 @@
--/* Test using setenv with a malloc-allocated environ variable.
-- Copyright (C) 2025 Free Software Foundation, Inc.
-- This file is part of the GNU C Library.
--
-- The GNU C Library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public
-- License as published by the Free Software Foundation; either
-- version 2.1 of the License, or (at your option) any later version.
--
-- The GNU C Library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with the GNU C Library; if not, see
-- <https://www.gnu.org/licenses/>. */
--
--/* This test is not in the scope for POSIX or any other standard, but
-- some applications assume that environ is a heap-allocated pointer
-- after a call to setenv on an empty environment. */
--
--#include <stdlib.h>
--#include <unistd.h>
--#include <support/check.h>
--#include <support/support.h>
--
--static const char *original_path;
--static char **save_environ;
--
--static void
--rewrite_environ (void)
--{
-- save_environ = environ;
-- environ = xmalloc (sizeof (*environ));
-- *environ = NULL;
-- TEST_COMPARE (setenv ("A", "1", 1), 0);
-- TEST_COMPARE (setenv ("B", "2", 1), 0);
-- TEST_VERIFY (environ != save_environ);
-- TEST_COMPARE_STRING (environ[0], "A=1");
-- TEST_COMPARE_STRING (environ[1], "B=2");
-- TEST_COMPARE_STRING (environ[2], NULL);
-- TEST_COMPARE_STRING (getenv ("PATH"), NULL);
-- free (environ);
-- environ = save_environ;
-- TEST_COMPARE_STRING (getenv ("PATH"), original_path);
--}
--
--static int
--do_test (void)
--{
-- original_path = getenv ("PATH");
-- rewrite_environ ();
--
-- /* Test again after reallocated the environment due to an initial
-- setenv call. */
-- TEST_COMPARE (setenv ("TST_SETENV_MALLOC", "1", 1), 0);
-- TEST_VERIFY (environ != save_environ);
-- rewrite_environ ();
--
-- return 0;
--}
--
--#include <support/test-driver.c>
-
-base-commit: b62759db04b8ed7f829c06f1d7c3b8fb70616493
---
-2.48.1
-
next reply other threads:[~2025-01-24 11:27 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-24 11:27 Sam James [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-01-24 1:28 [gentoo-commits] proj/toolchain/glibc-patches:master commit in: 9999/ Sam James
2024-12-22 6:28 Sam James
2024-08-26 16:38 Sam James
2024-02-19 0:52 Andreas K. Hüttel
2024-01-11 23:28 Andreas K. Hüttel
2024-01-11 23:27 Andreas K. Hüttel
2023-12-25 20:15 Andreas K. Hüttel
2023-12-25 20:11 Andreas K. Hüttel
2023-12-23 21:58 Andreas K. Hüttel
2023-10-04 19:13 Andreas K. Hüttel
2023-09-11 17:21 Andreas K. Hüttel
2023-07-17 20:40 Andreas K. Hüttel
2023-02-01 19:47 Andreas K. Hüttel
2023-01-01 18:42 Andreas K. Hüttel
2022-09-20 17:56 Andreas K. Hüttel
2022-09-19 21:26 Andreas K. Hüttel
2022-08-08 21:22 Andreas K. Hüttel
2022-07-29 12:20 WANG Xuerui
2022-07-05 4:02 Andreas K. Hüttel
2022-04-16 11:54 Andreas K. Hüttel
2022-04-16 11:54 Andreas K. Hüttel
2022-04-16 11:54 Andreas K. Hüttel
2022-03-27 16:12 Andreas K. Hüttel
2022-03-07 1:04 Andreas K. Hüttel
2022-02-21 21:42 Andreas K. Hüttel
2022-02-12 18:45 Andreas K. Hüttel
2022-01-06 15:13 Andreas K. Hüttel
2022-01-05 21:19 Andreas K. Hüttel
2022-01-04 11:00 Andreas K. Hüttel
2021-12-01 16:30 Andreas K. Hüttel
2021-12-01 16:17 Andreas K. Hüttel
2021-08-02 22:42 Andreas K. Hüttel
2021-08-02 22:41 Andreas K. Hüttel
2021-07-22 23:17 Andreas K. Hüttel
2021-05-25 20:30 Andreas K. Hüttel
2021-04-10 15:34 Andreas K. Hüttel
2021-02-27 19:18 Andreas K. Hüttel
2020-07-23 23:20 Andreas K. Hüttel
2020-07-18 16:23 Andreas K. Hüttel
2020-05-13 8:52 Andreas K. Hüttel
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=1737718044.76b1cd8ec361bee90e8ebfcd58dd44f8017684c5.sam@gentoo \
--to=sam@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox