Another version was proposed upstream
https://sourceware.org/bugzilla/attachment.cgi?id=14283

lets wait a bit more on this one.

On Sat, Aug 13, 2022 at 2:39 PM Martin Jansa <martin.jansa@gmail.com> wrote:
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 ...lement-a-useful-version-of-_startup_.patch | 128 ------------------
 .../glibc/glibc/0025-startup-Force-O2.patch   |  28 ++++
 meta/recipes-core/glibc/glibc_2.36.bb         |   2 +-
 3 files changed, 29 insertions(+), 129 deletions(-)
 delete mode 100644 meta/recipes-core/glibc/glibc/0025-Revert-Linux-Implement-a-useful-version-of-_startup_.patch
 create mode 100644 meta/recipes-core/glibc/glibc/0025-startup-Force-O2.patch

diff --git a/meta/recipes-core/glibc/glibc/0025-Revert-Linux-Implement-a-useful-version-of-_startup_.patch b/meta/recipes-core/glibc/glibc/0025-Revert-Linux-Implement-a-useful-version-of-_startup_.patch
deleted file mode 100644
index 1982598339..0000000000
--- a/meta/recipes-core/glibc/glibc/0025-Revert-Linux-Implement-a-useful-version-of-_startup_.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-From 18b04419d5984f5c6c89fab5e72fcdd1942491cb Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Sun, 7 Aug 2022 12:51:48 +0200
-Subject: [PATCH] Revert "Linux: Implement a useful version of _startup_fatal"
-
-This reverts commit a2a6bce7d7e52c1c34369a7da62c501cc350bc31.
-
-Upstream-Status: Inappropriate [temporary work around]
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- sysdeps/unix/sysv/linux/i386/startup.h | 23 ++++++++++++---
- sysdeps/unix/sysv/linux/ia64/startup.h | 22 ---------------
- sysdeps/unix/sysv/linux/startup.h      | 39 --------------------------
- 3 files changed, 19 insertions(+), 65 deletions(-)
- delete mode 100644 sysdeps/unix/sysv/linux/ia64/startup.h
- delete mode 100644 sysdeps/unix/sysv/linux/startup.h
-
-diff --git a/sysdeps/unix/sysv/linux/i386/startup.h b/sysdeps/unix/sysv/linux/i386/startup.h
-index 213805d7d2..67c9310f3a 100644
---- a/sysdeps/unix/sysv/linux/i386/startup.h
-+++ b/sysdeps/unix/sysv/linux/i386/startup.h
-@@ -1,5 +1,5 @@
- /* Linux/i386 definitions of functions used by static libc main startup.
--   Copyright (C) 2022 Free Software Foundation, Inc.
-+   Copyright (C) 2017-2022 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
-@@ -16,7 +16,22 @@
-    License along with the GNU C Library; if not, see
-    <https://www.gnu.org/licenses/>.  */
-
--/* Can't use "call *%gs:SYSINFO_OFFSET" during startup.  */
--#define I386_USE_SYSENTER 0
-+#if BUILD_PIE_DEFAULT
-+/* Can't use "call *%gs:SYSINFO_OFFSET" during statup in static PIE.  */
-+# define I386_USE_SYSENTER 0
-
--#include_next <startup.h>
-+# include <sysdep.h>
-+# include <abort-instr.h>
-+
-+__attribute__ ((__noreturn__))
-+static inline void
-+_startup_fatal (const char *message __attribute__ ((unused)))
-+{
-+  /* This is only called very early during startup in static PIE.
-+     FIXME: How can it be improved?  */
-+  ABORT_INSTRUCTION;
-+  __builtin_unreachable ();
-+}
-+#else
-+# include_next <startup.h>
-+#endif
-diff --git a/sysdeps/unix/sysv/linux/ia64/startup.h b/sysdeps/unix/sysv/linux/ia64/startup.h
-deleted file mode 100644
-index 77f29f15a2..0000000000
---- a/sysdeps/unix/sysv/linux/ia64/startup.h
-+++ /dev/null
-@@ -1,22 +0,0 @@
--/* Linux/ia64 definitions of functions used by static libc main startup.
--   Copyright (C) 2022 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 code is used before the TCB is set up.  */
--#define IA64_USE_NEW_STUB 0
--
--#include_next <startup.h>
-diff --git a/sysdeps/unix/sysv/linux/startup.h b/sysdeps/unix/sysv/linux/startup.h
-deleted file mode 100644
-index 39859b404a..0000000000
---- a/sysdeps/unix/sysv/linux/startup.h
-+++ /dev/null
-@@ -1,39 +0,0 @@
--/* Linux definitions of functions used by static libc main startup.
--   Copyright (C) 2017-2022 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/>.  */
--
--#ifdef SHARED
--# include_next <startup.h>
--#else
--# include <sysdep.h>
--
--/* Avoid a run-time invocation of strlen.  */
--#define _startup_fatal(message)                                         \
--  do                                                                    \
--    {                                                                   \
--      size_t __message_length = __builtin_strlen (message);             \
--      if (! __builtin_constant_p (__message_length))                    \
--        {                                                               \
--          extern void _startup_fatal_not_constant (void);               \
--          _startup_fatal_not_constant ();                               \
--        }                                                               \
--      INTERNAL_SYSCALL_CALL (write, STDERR_FILENO, (message),           \
--                             __message_length);                         \
--      INTERNAL_SYSCALL_CALL (exit_group, 127);                          \
--    }                                                                   \
--  while (0)
--#endif  /* !SHARED */
diff --git a/meta/recipes-core/glibc/glibc/0025-startup-Force-O2.patch b/meta/recipes-core/glibc/glibc/0025-startup-Force-O2.patch
new file mode 100644
index 0000000000..1f3426295a
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0025-startup-Force-O2.patch
@@ -0,0 +1,28 @@
+From 5e635e5dc7d1b21a78f38109d4f43a03bec865c8 Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Sun, 7 Aug 2022 12:51:48 +0200
+Subject: [PATCH] startup: Force -O2
+
+Upstream-Status: Submitted [https://sourceware.org/bugzilla/show_bug.cgi?id=29249]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ sysdeps/unix/sysv/linux/startup.h | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/sysdeps/unix/sysv/linux/startup.h b/sysdeps/unix/sysv/linux/startup.h
+index 39859b404a..e1fc1b682d 100644
+--- a/sysdeps/unix/sysv/linux/startup.h
++++ b/sysdeps/unix/sysv/linux/startup.h
+@@ -21,6 +21,11 @@
+ #else
+ # include <sysdep.h>
+
++# if !defined __OPTIMIZE__ || __OPTIMIZE__ < 2
++/* Force to fold strlen.  */
++#  pragma GCC optimize(2)
++# endif
++
+ /* Avoid a run-time invocation of strlen.  */
+ #define _startup_fatal(message)                                         \
+   do                                                                    \
diff --git a/meta/recipes-core/glibc/glibc_2.36.bb b/meta/recipes-core/glibc/glibc_2.36.bb
index 6ccb392f09..1cfa8101ef 100644
--- a/meta/recipes-core/glibc/glibc_2.36.bb
+++ b/meta/recipes-core/glibc/glibc_2.36.bb
@@ -50,7 +50,7 @@ SRC_URI =  "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
            file://0022-tzselect.ksh-Use-bin-sh-default-shell-interpreter.patch \
            file://0023-fix-create-thread-failed-in-unprivileged-process-BZ-.patch \
            file://0024-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch \
-           file://0025-Revert-Linux-Implement-a-useful-version-of-_startup_.patch \
+           file://0025-startup-Force-O2.patch \
 "
 S = "${WORKDIR}/git"
 B = "${WORKDIR}/build-${TARGET_SYS}"
--
2.37.2