summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/glibc/glibc/0025-Revert-Linux-Implement-a-useful-version-of-_startup_.patch
blob: 19825983399221c0d763972b20616a73be9a0475 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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 */