summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/glibc/glibc/0001-Revert-Linux-Implement-a-useful-version-of-_startup_.patch
blob: 2421a6360559d487212efff141e89ab28e1686a3 (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 6b8959add09e425df262bf9178b39ca35bc4003c Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Sun, 24 Jul 2022 19:41:41 +0200
Subject: [PATCH] Revert "Linux: Implement a useful version of _startup_fatal"

This reverts commit 2d05ba7f8ef979947e910a37ae8115a816eb4d08.
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 */